[SWPUCTF 2021 新生赛]easy_md5--php弱类型比较

 <?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?>
wrong!
  • 只要两个数的md5加密后的值以0e开头就可以绕过(因为php在进行弱类型比较‘==’时,会现转换字符串的类型再进行比较,因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等)

    name=240610708

    password=QLTHNDT

  • 使用[]类型,由于md5()函数存在缺陷,加密[]的时候返回值是NULL,这样子无论如何都相等了

 

posted @ 2024-02-03 17:08  努力的大魔王  阅读(116)  评论(0编辑  收藏  举报