old 27번에 들어갔더니 위와 같은 화면이 나왔다. 18번 문제와 같이 간단하게 sql injection이라는 것을 알 수 있엇다. view-source에서 코드에 들어가 중요한 부분을 확인해보았다.
여기서 보면 id 값이 admin이면 풀리는 문제인 거 같다.
위의 코드에서 쿼리문 부분을 보면 id가 guest로 지정되어 있는 것을 볼 수 있다.
또한, 주석으로 admin's no=2라고 되어있다.
저 주석이 힌트를 알려주고 있다.
아무 숫자나 넣어보니 quest라고 뜬다.
힌트로 나온 2를 넣어보니 querry error라는 문장이 뜬다.
주석에서 admin의 no 값이 2라고 했기 때문에 쿼리문을 조작해서 no의 값을 2로 만들 수 있을 것 같다.
0) or no like 2
preg_match() 필터링을 위해서 위와 같은 쿼리문을 작성했다.
하지만 띄어쓰기 또한 우회된다는 것을 우리는 18번 문제를 풀면서 알 수 있었기 때문에 띄어쓰기에 %09 문자를 입력해줄 것이다.
그러면 0)%09or%09no%09like%092 라는 문장이 나온다.
No 부분의 닫는 괄호인 ')'가 아직 살아있기 때문에 그 뒤의 부분을 주석처리히면 우회할 수 있다.
?no=0)%09or%09no%09like%092--%09를 입력창이 아닌 url에 넣어서 문제를 해결할 것이다.
18번 문제와 비슷한 유형이기 때문에 우리가 제출창에 구한 값을 넣으면 다른 값으로 인코딩 되어서 들어가기 때문이다.
문제를 풀었다!
'Webhaking > WebHaking CTF' 카테고리의 다른 글
[Webhaking.kr] old 22번 (0) | 2020.11.09 |
---|---|
[Webhaking.kr] old 9번 (0) | 2020.11.09 |
[Webhaking.kr] old 18번 (0) | 2020.11.05 |
[Webhaking.kr] old 17번 (0) | 2020.10.02 |
[Webhaking.kr] old 14번 (0) | 2020.10.02 |