728x90
<?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이 되면은 풀리는 문제이다.
db를 확인하기 위해 id에 *을 넣어서 보내면은 test만 뜨게 되는데 chall61 db가 id만 있단는 것을 알 수 있었다.
사실상 문제 풀이와는 관계없는 내용이다...
select문에 as(별칭)라는 기능이 있는데 select admin as id라고 치면은 id=admin으로 인식된다. 그래서 ?id=admin as id로 입력해주면
아무 일도 안일어난다. 그래서 admin을 hex 값으로 바꿔줘서 입력해주면은 (0x붙여줘야함)
Access Denied가 뜨는데 이는 15자리가 넘어서 그런것 같다. as는 생략이 가능하기때문에 as를 빼고 입력하면은
풀리게 된다.
728x90
반응형
'Web Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old 37 (해결X) (0) | 2023.12.14 |
---|---|
Webhacking.kr 23번 문제 풀이 (0) | 2023.12.03 |
Webhacking.kr old-59번 풀이 (1) | 2023.11.26 |
Webhacking.kr old-36 풀이 (0) | 2023.11.25 |
Webhacking.kr old-25 풀이 (php wrapper) (2) | 2023.11.21 |