
[ webhacking.kr ] 61번 old
sangjun
·2022. 1. 23. 12:12
반응형
문제 소스
<?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>";
?>
- GET방식으로 id를 받는다.
- id가 없을 시에 guest로 로그인 된다.
- id에 필터링과 길이 제한이 있다.
- sql injection으로 쿼리로 admin을 끌어오도록 만들어야 한다.
- select [payload] from chall 61 order by id desc limit 1
--> id를 기준으로 내림차순으로 정렬하고 상위 첫번째 행만 출력한다.
문제 풀이
- AS 예약어를 이용해 풀이한다.
- admin(hex) -> 0x61646d696e
- 0x61646d696e as id --> 0x61646d696e id
로컬에서 mysql로 실험을 해봤다.
반응형
'War Games > webhacking.kr' 카테고리의 다른 글
[ webhacking.kr ] 56번 old (0) | 2022.01.24 |
---|---|
[ webhacking.kr ] 57번 old (0) | 2022.01.24 |
[ webhacking.kr ] 58번 old (0) | 2022.01.24 |
[ webhacking.kr ] 59번 old (0) | 2022.01.23 |
[ webhacking.kr ] 60번 old (0) | 2022.01.23 |
[ webhacking.kr ] 61번 old (0) | 2022.01.23 |
0개의 댓글