MD5、HASH相关漏洞 {#md5、hash相关漏洞}
原理 {#原理}
PHP
为弱类型语言,不通数据类型可以进行转换,在进行算数运算时(加、减、乘、除、比较等)会把运算符两边的变量先统一转换为整数再进行运算,如果时拼接操作则会转换为Str类型再进行拼接。
*
示例 {#示例}
<?php
if (md5($GET['a']==md5($GET['b'])){ //输入两个值,比较它们的值,如果相等,输出flag
echo $flag;
}
MD5
加密产生的一般为字符串,该函数意图是比较两个字符串是否相等,但是MD5
加密可能产生形似0e123456..
的字符串,php尝试将该字符串转换为整数时,结果总是为0(科学计数法),因此只要找到两个字符串MD5加密后能产生0e123456..
结构的字符串,这个函数就被破解了。
*
典型 {#典型}
#### MD5加密 {#md5加密}
* QNKCDZO
* 240610708
* s878926199a
* s155964671a
* s214587387a
#### MD4加密 {#md4加密}
* 0e251288019
#### SHA1加密 {#sha1加密}
* aa3OFF9m
* aaO8zKZF
* aaroZmOk
* aaK1STfY