其他分享
首页 > 其他分享> > [MRCTF2020]Ez_bypass WP

[MRCTF2020]Ez_bypass WP

作者:互联网

首先打开页面
在这里插入图片描述
他提示说f12里面有东西,于是直接ctrl+u 查看源代码


I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {  // 进行判断gg和id两个参数
    $id=$_GET['id'];
    $gg=$_GET['gg'];
    if (md5($id) === md5($gg) && $id !== $gg) {  //发现三个等于  代表这里是强类型比较 且进行md5加密 
        echo 'You got the first step';
        if(isset($_POST['passwd'])) {  //post参数检验
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))
            {
                 if($passwd==1234567)
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php');
                     die('By Retr_0');
                 }
                 else
                 {
                     echo "can you think twice??";
                 }
            }
            else{
                echo 'You can not get it !';
            }

        }
        else{
            die('only one way to get the flag');
        }
}
    else {
        echo "You are not a real hacker!";
    }
}
else{
    die('Please input first');
}
}Please input first

得到源码,根据题目提示,这是一道绕过题 且对代码进行审计 发现三个等于 代表这里是强类型比较 且进行md5加密
那么思路就是使用加密后的md5值为0e开头的字符

这里为什么md5值相同是因为php里面在做 == 的时候会先把两边的类型转成一样的,因为是0e开头,php会认为它是科学技计数法,而0的多少次方都是0

常见md5加密后为0e开头的可以去这个博客看

https://blog.csdn.net/qq_29566629/article/details/108736519

那么既然思路有了,就开干
在这里插入图片描述
emm 发现淦不通,于是利用数组绕过看看。

构造payload

?gg[]=QNKCDZO&id[]=s878926199a

得到
在这里插入图片描述可以看到,这里已经绕过一层,提示说还有一步就能得到flag
继续审计源码

is_numeric() 函数用于检测变量是否为数字或数字字符串

is_numeric()函数用1234567x绕。1234567x是字符串,但是弱比较的时候,因为数字在前面,若比较的时候,php会将其整体转成数字,就可以通过比较了

payload:post传参 passwd=1234567x  //这里x可以替换为其他字母

在这里插入图片描述
发包,从而得到flag
flag为flag{eb0b0a6d-6011-426d-9ad1-e07dcf092ad4}
本题主要是考查强比较和若比较以及一些基本函数的绕过。

标签:passwd,WP,echo,gg,flag,bypass,Ez,id,md5
来源: https://www.cnblogs.com/snail7/p/16558927.html