Wargame/webhacking2017. 5. 4. 10:35

webhacking.kr 7번 문제를 보면 아래와 같다.

Admin page라는 문자열이 출력되고 아래에 auth 버튼이 있다.

인증하는 버튼인 것 같으니 일단 클릭을 해보자.

Access_Denied 라는 알림창이 뜬다.


페이지 소스를 한번 확인해보자.

주석을 보니 admin mode는 val값이 2이다.

val값을 2로 놓고 들어가보자.

이번엔 Access Denied 라는 문자열이 출력이된다.

index.phps 페이지로 가보면 다음과 같은 코드가 있다.

* 필자는 Safari에서 한글이 깨져 firefox로 해당 페이지에 들어갔다.


우선 주석을 보니 db에 val=2가 존재하지 않고, union을 이용하라고 힌트가 나와있다.


코드를 보면 변수 go에 val로 넘어온 값을 넣는다.

ck 변수에 go에 저장된 값을 넣고 --, 2, 50 등 여러가지 문자열을 필터링한다.

rand 변수에 1~5까지의 값을 랜덤하게 넣고 if문으로 분기한다.

각 if문 안에서 result 변수에 mysql_query문을 저장하는데, 쿼리문의 형식이 조금씩 다르다.

data 변수에 mysql_fetch_array() 함수를 이용 쿼리가 저장된 result의 결과를 저장한다.

data에 저장된 값에 대해 if문으로 분기하는데, 그 값이 1이면 7번 문제 페이지에서 처음봤던 화면이 출력이 되고, 값이 2이면 문제가 풀리는 것 같다.


이제 해야할 것은 쿼리문을 우회해야 하는 것이다.

쿼리문을 보면 select vl from lv1 where lv=($go) 와 같은 형식이다.

val=1) union select (2

를 만들면 될것 같은데 필터링할 때 공백문자와, 숫자 2가 필터링이 되기 때문에 이를 우회하기 위해 다음과 같이 입력한다.

val=1)%0Aunion%0Aselect%0A(3-1


그런데 다음과 같은 화면을 볼 수 있다.

현재 7번 문제에 대해서 서버에 문제가 있는 것 같다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 10번 문제  (0) 2017.05.04
[webhacking.kr] 8번 문제  (0) 2017.05.04
[webhacking.kr] 6번 문제  (0) 2017.05.02
[webhacking.kr] 5번 문제  (0) 2017.05.02
[webhacking.kr] 4번 문제  (0) 2017.05.02
Posted by Imp3rio