d0r1

[webhacking] old 61 본문

webhacking

[webhacking] old 61

d0r1 2023. 11. 10. 10:25
<?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>";
?>

다음과 같은 코드가 존재한다

사이트에는 소스코드를 보는 버튼만 존재하고, 이외의 버튼은 존재하지 않는다

 

 

result[id]가 admin이어야 문제가 풀린다

처음에 id가 admin이면 되는줄 알고, ?id='admin'을 넣었는데 안풀렸다

 

확인해보니, 결과의 id가 admin이어야 풀리는 문제였다.

 

다음의 결과를 참고하여,

id='admin' as id 

를 하려 했다

 

그럼에도 불구하고, 문제가 풀리지 않았다.

 

아무래도 공개되지 않은 필터링이 존재하는 듯 했다.

 

admin을 hex값으로 변환하여 대입을 하자

 

admin --> 0x61645d696e

 

그러나 위의 조건 중 15글자를 넘으면 안된다는것이 존재하고

id=0x61646d696e as id 를 하게 되면 15글자를 넘기에

 

as는 생략이 가능한 점을 이용해서

 

id=0x61646d696e id 를 대입해주었더니

 

'webhacking' 카테고리의 다른 글

[webhacking] old 7  (0) 2023.11.08
[webhacking] old-56  (0) 2023.11.07
[webhacking] old-49  (0) 2023.11.07
[webhacking] old-02  (0) 2023.11.07
[webhacking.kr] old-23  (0) 2023.08.29