가장 기본적으로 no 에 무작위로 값을 넣어보았다.
우선 guest는 no 번호가 1번으로 설정되어 있나보다.
코드를 보지도않고 우선 union injection 을 시도해보았다.
no=0 union select id from prob_goblin where id='admin'
바로 막혀버렸다..
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
이 부분때문에 쿼티를 사용하여 admin 이라는 문자열을 id로 넘겨줄 수 없었다.
no=0 and id=%27admin%27
으로 쿼티를 URL 인코딩을 시도해보아도 서버에서 인증하는 값은 같아서 그런지 막혔다.
URL 인코딩을 시도하다보니 HEX 값으로 인코딩하면 될 것 같았다.
admin 문자열을 0x61646d696e 으로 인코딩하였다.
그리고 no=0 으로 guest 조건은 거짓으로 만들고 id 에 HEX 값을 삽입하였다.
no=0 or id=0x61646d696e
클리어가 되었다~
그런데 생각해보니 다른 취약점이 생각나서 다른 방법으로 시도해보았다.
Burp Suite 를 이용하여 no 값을 무차별로 요청하는 방법도 있었다.
no=0 or no=2
겨우 admin 이 no=2 이라서 맥은 좀 빠졌지만
다른 방법으로도 풀 수 있어서 뿌듯했다.
답 :
1. no=0 or id=0x61646d696e (인코딩)
2. no=0 or no=2 (무차별 대입 공격)
'WarGame > [Lord of SQL Injection]' 카테고리의 다른 글
[Lord of SQL Injection] 2번 문제 colbat (0) | 2020.07.02 |
---|---|
[Lord of SQL Injection] 1번 문제 gremlin (0) | 2020.06.23 |