WarGame/[Lord of SQL Injection]

[Lord of SQL Injection] 3번 문제 goblin

3번 문제

가장 기본적으로 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 (무차별 대입 공격)