1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php error_reporting(0);
include('flag.php'); if(isset($_GET['token'])){ $token = md5($_GET['token']); if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){ if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){ echo $flag; } } }else{ highlight_file(__FILE__);
} ?>
|
tips
substr()
:切割字符串,参数2为开始切割位置(含该字符),参数3为切割长度。
intval()
:取整数。
highlight_file(__FILE__)
:访问该 PHP 文件时高亮显示源码。
md5()
函数输出哈希字符串,结合下面的if
语句的极端罕见条件,本题只能靠穷举碰运气得出正确的哈希值,才能返回 flag 。
先在 URL 用 GET 方法传参(参数随意),抓包,传到 burp 的 intruder 模块修改。利用 Payloads 中 Payload type 的 Custom iterator ,组合出大量不同的 Payload 并攻击。最后以响应的长度排序,与其他包长度不一样的就是碰对运气带有 flag 的。