$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";}
要是md51等于md52
- PHP在处理哈希字符串时,会利用”!=”或””来对哈希值进行比较,它把每一个以“0E”开头的哈希值都解释为0
- 如果两个不同的值经过哈希以后,都是0E开头,那么PHP将会认为他们相同
http://chinalover.sinaapp.com/web19/?a=s878926199a
flag是 nctf{md5_collision_is_easy}
部分md5函数0e开头的值
- s878926199a
- 0e545993274517709034328855841020
- s155964671a
- 0e342768416822451524974117254469
- s214587387a
- 0e848240448830537924465865611904
- s214587387a
- 0e848240448830537924465865611904
- s878926199a
- 0e545993274517709034328855841020
- s1091221200a
- 0e940624217856561557816327384675
- s1885207154a
- 0e509367213418206700842008763514
- s1502113478a
- 0e861580163291561247404381396064
- s1885207154a
- 0e509367213418206700842008763514
- s1836677006a
- 0e481036490867661113260034900752
- s155964671a
- 0e342768416822451524974117254469
- s1184209335a
- 0e072485820392773389523109082030
- s1665632922a
- 0e731198061491163073197128363787
- s1502113478a
- 0e861580163291561247404381396064
- s1836677006a
- 0e481036490867661113260034900752
- s1091221200a
- 0e940624217856561557816327384675
- s155964671a
- 0e342768416822451524974117254469