https://los.rubiya.kr/gate.php
풀이 참고 링크: 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을 추가함으로써 문제를 해결할 수 있었다.
'CTF > 기타' 카테고리의 다른 글
[XSS-game] level 2 (0) | 2022.11.07 |
---|---|
[XSS-game] level 1 (0) | 2022.10.31 |
[Load of SQL Injection] orc (0) | 2022.10.31 |
[Load of SQL Injection] cobolt (0) | 2022.10.31 |
[Load of SQL Injection] gremlin (0) | 2022.10.31 |