2019. 10. 15. 20:34ㆍWargame/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 |