我试图这样做挑战PHP /逻辑和黑客攻击。我必须要打印页面"成功"找到此页面的密码http://leggend.orgfree.com/index.php/challenge/strcmp.php,当我发现我必须在URL中添加密码时,如下所示:
http://leggend.orgfree.com/index.php/chall...mp.php?psw=PASSWORD
密码(我认为这个)在password.php等,但如果你进入密码.php进入挑战网站。
我发现psw = 00但不正确
答案 0 :(得分:0)
将其用作 http://leggend.orgfree.com/index.php/challenge/strcmp.php?psw[]= 这就是诀窍
PHP中的函数在收到错误类型的参数时返回NULL。在strcmp的情况下,两个参数必须是字符串。我将变量传递为" psw []"在那种情况下,它成为阵列。因此strcmp的参数是数组和字符串,函数返回NULL。然后检查 == ,如果有不同类型,则发生类型转换,NULL == 0返回true。要解决此问题,只需将 == 替换为 === 或检查输入参数的类型。所以固定代码如下:
$correctPassword = include "password.php";
if (isset($_GET["psw"]) && strcmp($_GET["psw"], $correctPassword) === 0) {
echo "Successo!";
}