반응형

입력창 하나와 소스보기


<?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가 있으면 addslashes를 통해 문자를 처리하고 각 문자를 삭제한뒤 필터링을 거쳐 query에 넣는 걸 볼수있다. 많은 필터링을 거친후 db로부터 받은 idadmin이면 성공하는 것으로 보인다.

0||id='admin' 이런 문장이 만들어지면 될거같다.

필터링 되는건 admin과 '이다.

0||id=char(97,100,109,105,110)으로 해보자

성공!




반응형

'보안 > webhacking' 카테고리의 다른 글

webhacking.kr old-49  (0) 2019.12.07
webhakcing.kr old-48  (0) 2019.12.07
webhacking.kr old-45  (0) 2019.12.06
webhacking.kr old-44  (0) 2019.12.05
webhacking.kr old-43  (0) 2019.12.05
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기