Lord Of Sql injection
LOS 18번 NIGHTMARE
Dork94
2019. 2. 8. 15:31
푸는데 생각보다 오래걸렸던 문제네요 :)
6자 이내로 pw의 조건을 참으로 바꾸고 뒤에 and id!='admin'을 우회해야 하는 문제입니다.
6자 이내가 아니였다면 조금더 쉬웠을 것 같은데.. or 1 만 생각하는 사고에 갇혀서 조금 헤맸네요 :)
mysql 서버를 구축하여 이래저래 해보다가 pw=('')의 값이 리턴 값의 형태일 것이라고 유추하여 연산자를 이용해서 비교해보니 참이 아닐때는 0값을 리턴하더라구요 :)
그래서 pw=('')=0과 같이 and 이전의 값을 true로 셋팅해주었습니다.
그리고 이제 뒤의 and를 주석처리해야해야하는데 # (%23)이나 --가 필터링 되어있습니다.
mysql에서 테스트 하던 도중 세미콜론을 이용하여 문장의 끝을 가르킨다는 것에 착안하여 ';'를 해봤지만 실패..
그래서 주석 우회 기법을 쳐보니 블로그 (https://security04.tistory.com/171)에 세미콜론 뒤에 널바이트를 붙여 문장을 끝을 알리는 방식으로 우회가 가능하더라구요.
그래서 아래와 같이 쿼리문을 작성하니 클리어!
이때 세미콜론뒤에 %00을 추가해주셔야 합니다!