提问人:pittgi 提问时间:11/3/2023 更新时间:11/3/2023 访问量:97
php 中的类型杂耍:绕过与非空数组的比较
Type-juggling in php: bypass a comparison with non-empty array
问:
在我的 web-security-class 的 CTF 上,我能够在服务器上找到以下 php 代码
<?php
$user = array("user" => "admin");
$secret = random_bytes(20);
if (isset($_GET["usr"]) and isset($_GET["pwd"])) {
if ($_GET["usr"] == $user) {
if (! strcmp($_GET["pwd"], $secret)) {
echo var_dump(scandir($_GET["path"][1]));
} else {
echo "Wrong pwd!";
}
} else {
echo "You are so close!";
}
}
?>
我必须发送什么有效负载才能绕过比较?$_GET["usr"] == $user
我尝试将 NULL 作为“%00”、“0”和“1”发送,因为我想弱 == 比较可能会打开一些类型杂耍的可能性,但它没有用。
答:
4赞
AymDev
11/3/2023
#1
变量是一个数组。GET 数据可以包含数组,您可以使用正确的语法来“绕过”条件:$user
?usr[user]=admin
我不认为你可以在这里使用类型杂耍。
评论
==
$_GET['usr']