美文网首页
MD5函数与字符串匹配问题

MD5函数与字符串匹配问题

作者: Oomcc | 来源:发表于2019-06-19 11:06 被阅读0次

    题目

    if (isset($_GET['a']) and isset($_GET['b'])) {
        if ($_GET['a'] != $_GET['b']) {
            if (md5($_GET['a']) === md5($_GET['b'])) {
                echo ('Flag: '.$flag);
            }else {
                echo 'Wrong.';
            }
        }
    }
    

    相关知识

    PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
    常见的payload有

    QNKCDZO
    240610708
    s878926199a
    s155964671a
    s214587387a
    s214587387a
     sha1(str)
    sha1('aaroZmOk')  
    sha1('aaK1STfY')
    sha1('aaO8zKZF')
    sha1('aa3OFF9m')
    

    同时MD5不能处理数组,若有以下判断则可用数组绕过

    if(@md5($_GET['a']) == @md5($_GET['b']))
    {
        echo "yes";
    }
    // http://127.0.0.1/1.php?a[]=1&b[]=2
    

    相关文章

      网友评论

          本文标题:MD5函数与字符串匹配问题

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