MD5、HASH相关漏洞

  • 原理

    PHP为弱类型语言,不通数据类型可以进行转换,在进行算数运算时(加、减、乘、除、比较等)会把运算符两边的变量先统一转换为整数再进行运算,如果时拼接操作则会转换为Str类型再进行拼接。

  • 示例

    <?php
    if (md5($GET['a']==md5($GET['b'])){ //输入两个值,比较它们的值,如果相等,输出flag
    	echo $flag;
    }
    

    MD5加密产生的一般为字符串,该函数意图是比较两个字符串是否相等,但是MD5加密可能产生形似0e123456..的字符串,php尝试将该字符串转换为整数时,结果总是为0(科学计数法),因此只要找到两个字符串MD5加密后能产生0e123456..结构的字符串,这个函数就被破解了。

  • 典型

    • MD5加密

      • QNKCDZO
      • 240610708
      • s878926199a
      • s155964671a
      • s214587387a
    • MD4加密

      • 0e251288019
    • SHA1加密

      • aa3OFF9m
      • aaO8zKZF
      • aaroZmOk
      • aaK1STfY