buuctf-web-[MRCTF2020]Ez_bypass

知识点:md5的强弱比较

== 先将字符串类型转化成相同,再比较

=== 先判断两种字符串的类型是否相等,再比较。

先看代码关键部分

if (md5($id) === md5($gg) && $id !== $gg) {
        echo 'You got the first step';
        if(isset($_POST['passwd'])) {
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))
            {
                 if($passwd==1234567)
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php');

看到id和gg是强比较,可以用数组绕过(因为md5()计算的是字符串的值,对数组返回的都是false),即构造payload:?id[]=1&gg[]=2

接下来是弱类型绕过!is_numeric,passwd不能是数字但==1234567。弱类型比较的时候先会把字符串类型转换成相同的,即123a==123.那么可以构造passwd=1234567a

posted @ 2022-12-31 23:18  Dk只能爬  阅读(60)  评论(0编辑  收藏  举报