반응형
php 의 느슨한 비교로 인해 발생하는 취약점이다.
== 비교에 대한 matrix는 아래와 같다.
이제 문제의 코드를 보겠다.
<?php
if (isset($_GET['view-source'])) {
show_source(__FILE__);
exit();
}
if (isset($_POST['json'])) {
usleep(500000);
require("./lib.php"); // include for FLAG.
$json = json_decode($_POST['json']);
$key = gen_key();
if ($json->key == $key) {
$ret = ["code" => true, "flag" => $FLAG];
} else {
$ret = ["code" => false];
}
die(json_encode($ret));
}
function gen_key(){
$key = uniqid("welcome to wargame.kr!_", true);
$key = sha1($key);
return $key;
}
?>
==비교를 하고 있으며 웹페이지에서 제출되는 값을 비교하여 참 거짓을 판별한다.
이때, 제출되는 payload를 보면, json형식으로 {key:value} 요롷게 전송되는 것을 볼 수 있다.
여기서 1234를 true로 전송해주면 상기의 표에 의해 비교했을때 true이므로 풀린다.
반응형
'wargame' 카테고리의 다른 글
LoS - zombie assassin (0) | 2023.08.27 |
---|---|
phpreg (0) | 2023.08.27 |
tmitter (0) | 2023.08.26 |
Robot-only (0) | 2023.07.21 |
file-csp-1 (0) | 2023.07.02 |