PHP 探测任意网站密码明文/加密手段办法: md5('240610708') == md5('QNKCDZO')

2015 年 5 月 4 日
 est
var_dump(md5('240610708') == md5('QNKCDZO'));
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
var_dump('0010e2' == '1e3');
var_dump('0x1234Ab' == '1193131');
var_dump('0xABCdef' == ' 0xABCdef');

感觉这个不科学啊

https://news.ycombinator.com/item?id=9484757
28114 次点击
所在节点    PHP
79 条回复
ywisax
2015 年 5 月 4 日
观察下最终的hash就明白了,都是0eXXXXXXXX 。
再加上php是弱语言,会自动判断数据类型。
零=零,明白了吧?
anyforever
2015 年 5 月 4 日
md5('240610708'); // 0e462097431906509019562988736854
md5('QNKCDZO'); // 0e830400451993494058024219903391

怎么可能这么容易碰撞
anyforever
2015 年 5 月 4 日
var_dump(md5('240610708') === md5('QNKCDZO'));
ywisax
2015 年 5 月 4 日
准确点说,是“==”对比的时候会进行数据转换,0eXXXXXXXXXX 转成0了。
了解php的“==”和“===“就更加清晰了。
yangff
2015 年 5 月 4 日
aliang032
2015 年 5 月 4 日
找了下手册说明贴给大家:

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行

http://php.net/manual/zh/language.operators.comparison.php
est
2015 年 5 月 4 日
@ywisax
@yangff

脑洞够大!
xifangczy
2015 年 5 月 4 日
卧槽 这脑洞。。太赞了
raincious
2015 年 5 月 4 日
这是个坑没错,所以密码比较的时候需要用 ===。但,怎么用它来:

> PHP 探测任意网站密码明文/加密手段办法

?不解。
est
2015 年 5 月 4 日
@raincious 把你的密码设成 0x1234Ab,然后退出登录再登录,换密码 1193131 登录,如果登录成功,那么密码绝对是明文保存的没跑。


同理,密码设置为 240610708,换密码 QNKCDZO 登录能成功,那么密码没加盐直接md5保存的。
cat9life
2015 年 5 月 4 日
长见识啊...
avtester
2015 年 5 月 4 日
知道了又能如何?
bingu
2015 年 5 月 4 日
呃,这个略迪奥
xierch
2015 年 5 月 4 日
PHP 的大坑哈哈哈
tabris17
2015 年 5 月 4 日
能强等的地方我都用强等的
NeoAtlantis
2015 年 5 月 4 日
散列不叫加密!
要不谁给我解密看看?XD
wy315700
2015 年 5 月 4 日
收藏了 ,好牛逼的攻击
raincious
2015 年 5 月 4 日
@est

恍然大悟,感谢!
Citrus
2015 年 5 月 4 日
第一次见到如此能唬人的标题党。。。看标题以为楼主完全攻破了 MD5 可以批量找碰撞了。。。
rwalle
2015 年 5 月 4 日
PHP中的==是挺坑的
但是PHP中还有很多同样大的坑。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/188364

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX