webhacking.kr 27번 문제(old)

2019. 10. 15. 20:34Wargame/webhacking.kr

27번 문제의 메인 페이지이다.

바로 소스를 확인해보자.

이 문제는 id 의 값이 admin 이면 풀리는 문제인것 같다.

하지만 저 코드에서 쿼리문 부분을 보면 id의 값이 guest로 지정되어있다.

그리고 아래 보면 주석처리로 // admin's no=2 라고 적혀져 있다.

아마 저 주석을 이용해서 문제를 풀 수 있을것 같다.

우선 메인페이지에서 아무값이나 넣어보며 결과를 확인해보자.

이 사진들은 각각 1,2를 입력했을때의 화면이다.

1을 입력했을때에는 guest가 

2를 입력했을땐 query error 가 출력되었다.

아까 주석에서 admin의 no 값은 2라고 했으니 쿼리문을 조작해서 no 의 값을 2로 만들어 보자

0) or no like 2

preg_match()필터링을 위해서 위와같은 쿼리문을 작성했다.

하지만 whitespace 도 우회하기 때문에 저 값들 사이사이에 띄어쓰기가 있는곳에 %09 (tab)문자를 입력해주자.

0)%09or%09no%09like%092

이렇게 입력한다면 쿼리문에는 id='guest' and (0) or no like 2 라는 값이 들어가 no 의 값을 2로 만들어 줄 수 있다.

하지만 이렇게 하면 no 부분의 닫는 괄호 가 아직 살아있기 때문에 그 뒤의 부분을 주석처리하거나

널바이트 인젝션으로 널값을 넣어줘서 문자열을 끝나게 하여 우회할 수 있다.

ex)

?no=0)%09or%09no%09like%092;%00 (여기서 %00은 널문자이고 앞에 ;는 세미콜론으로 명령문이 끝나는것을 의미한다.)

?no=0)%09or%09no%09like%092--%09 (--는 mysql 의 주석표시이고 왜인지는 모르겠지만 --뒤에는 꼭 공백이 있어야한다.)

이제 이 값들로 no의 값에 쿼리문을 날려보자.

 

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

webhacking.kr 25번 문제 (old)  (0) 2019.10.16
webhacking.kr 7번 문제 (old)  (0) 2019.10.16
webhacking.kr 26번 문제(old)  (0) 2019.10.15
webhacking.kr 24번 문제(old)  (0) 2019.10.15
webhacking.kr 23번 문제(old)  (0) 2019.10.10