반응형

 

 

 

문제소스:

1
2
3
4
5
6
7
8
9
10
11
12
<?php 
  include "./config.php"
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)|#|-/i'$_GET[pw])) exit("No Hack ~_~"); 
  if(strlen($_GET[pw])>6exit("No Hack ~_~"); 
  $query = "select id from prob_nightmare where pw=('{$_GET[pw]}') and id!='admin'"
  echo "<hr>query : <strong>{$query}</strong><hr><br>"
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id']) solve("nightmare"); 
  highlight_file(__FILE__); 
?>
cs

 

 

 

쿼리에서

and id!='admin' -> 그리고 id는 admin이 아니어야 한다.

로 인해서 pw 뒷부분을 주석처리하고 pw 부분을 True로 만들면 될 것 같지만,

 

 

if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~"); 
  if(strlen($_GET[pw])>6) exit("No Hack ~_~"
); 
 

#, -- 주석도 막아버리고 길이도 6까지로 제한되어 있다.

 

주석 처리부분은 ;%00로 할 수 있는 방법이 있다.

 

 

 

 

 

 

 

 

그런데 pw = ('')로 되어있다. pw = ('') = 0 으로 true로 만들어버린뒤 ;%00로 뒷부분을 주석처리하면 된다.

 

 

 

 

 

")=0;%00 그러면 딱 6자리 나온다.

 

 

 

 

 

 

반응형

+ Recent posts