CTF/기타
[Load of SQL Injection] goblin
8희
2022. 10. 31. 13:04
https://los.rubiya.kr/gate.php
https://los.rubiya.kr/gate.php
los.rubiya.kr
풀이 참고 링크: https://mandu-mandu.tistory.com/301
query : select id from prob_goblin where id='guest' and no=
-> query에서 id는 guest로 고정되어 있고, no는 입력 값을 받고 있다. no를 통해 공격해야 되는 것 같다.
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
-> no는 '가 필터링 된다.
if($result['id'] == 'admin') solve("goblin");
-> id 값은 admin이어야 한다.
no의 무작위 값으로 1을 집어 넣자 Hello guest 문구가 떴다. guest는 no는 1로 설정되어 있음을 알 수 있다.
no에 1 이외의 값을 넣음으로써 guest 조건은 거짓으로 만들고, or id = 'admin'을 붙이면 해결할 수 있다.
이때 해당 코드는 '을 필터링하기 때문에 admin이라는 문자열을 hex 값으로 인코딩하여 넣어줘야 한다.
해당 기법을 사용하기 위해 url 뒤에 ?no=0 or id = 0x61646d696e을 추가함으로써 문제를 해결할 수 있었다.