들어가니 대놓고 Blind Sql Injection 이라고 나온다.

위와 같은 Keyword 들을 필터링한다고 나와있다.



평소처럼 코드를 봐보니 위와 같은 주석이 있었으며 

그 내용을 보니 guest / guest 로 로그인 할 수 있고 admin의 password 를 찾으라는 것 같다.

guest / guest 로 로그인 하니 위와 같이 OK guest 가 나왔다.


이 외의 ID 나 잘못된 PW 를 입력하면 위와 같이 False 라고 나온다.

admin 으로 로그인하기 위해서 admin' and 1=1 -- 라는 Query 문을 작성했다.

위와 같이 OK admin 이라고 나온다.

나는 admin 의 password 를 알아내기 위해 true / false 를 반환하는 DB에

len() 이라는 function 을 이용하여 pw 의 길이를 유추했다.

Password 의 길이는 10 글자라고 한다.

하나하나 입력해보려면 시간이 너무 오래 걸리니 브루트포싱을 이용해서 찾기로 하였다.

굳이 Burp Suite 가 아니여도 되기는 하지만 여기서 User-Agent 와 Cookie 를 확인하고

다음과 같은 코드를 통해 Admin 의 Password 를 구할 수 있다.



위의 Substring () Function 은 MySQL 에서 substring(string, start point, length) 와 같은 형식으로 사용된다.

이 문제의 DB가 MySQL 이라는 걸 알 수 있었던 이유는 Injection 할 때 MySQL 에 있는 함수를 사용할 수 있다는 걸 알았기 때문이다.


따라서 위의 코드는 PW 가 10 글자 이니 10번의 반복을 하고,

DB 의 pw 에서 한 글자씩 가져와 비교해보고 OK 라는 문구로 True 값이 확인되면 key에 더하는 형식으로 admin 의 pw 를 찾았다.


'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 5번 문제  (0) 2018.09.21
Suninatas 23번 문제  (0) 2018.09.20
Webhacking.kr 3번 문제  (0) 2018.09.18
Webhacking.kr 14번 문제  (0) 2018.09.18
Webhacking.kr 15번 문제  (0) 2018.09.18