MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)

举报
士别三日wyx 发表于 2021/12/23 00:04:26 2021/12/23
【摘要】 MD5是一种散列函数,是哈希算法的一种,可以将任意长度的输入,通过散列算法变换成128位的散列值  MD5加密有4种绕过方式 0e绕过数组绕过MD5碰撞MD5SQL注入 0e绕过 0e开头的字符串在参与比较时,会被当做科学计数法,结果转换为0  比如将两个md5值进行弱类型比较 md...

MD5是一种散列函数,是哈希算法的一种,可以将任意长度的输入,通过散列算法变换成128位的散列值

 MD5加密有4种绕过方式

  1. 0e绕过
  2. 数组绕过
  3. MD5碰撞
  4. MD5SQL注入

0e绕过

0e开头的字符串在参与比较时,会被当做科学计数法,结果转换为0

 比如将两个md5值进行弱类型比较

md5('QNKCDZO') == md5(240610708)
 

MD5加密后会变成这个样子

0e830400451993494058024219903391 == 0e462097431906509019562988736854
 

由于0e开头的字符串会转换为0,所以真正比较的过程会变成下面这样

0 == 0
 

返回结果为true,也就是说0e开头的md5值进行弱类型比较时,结果相等

常用的MD5加密后以0E开头的有

    QNKCDZO
    240610708
    byGcY
    sonZ7y
    aabg7XSs
    aabC9RqS
    s878926199a
    s155964671a
    s214587387a
    s1091221200a

数组绕过

md5不能加密数组,传入数组会报错,但会继续执行并且返回结果为null

 比如将两个数组的md5值进行比较

md5(a[]=1) === md5(b[]=1)
 

由于md5函数无法处理数组,会返回null,所以md5加密后的结果是下面这样

null === null
 

结果返回true,也就是说数组的md5值进行比较时,结果相等

需要注意的是0e绕过只能绕过弱类型比较(==),而数组绕过不只可以绕过弱类型比较,还可以绕过强类型比较(===)

弱类型比较(==),只判断内容是否相等,如果是字符串类型,则转换成数值型后进行判断

强类型比较(===),判断内容的基础上,还会判断类型是否相同

 

MD5碰撞

MD5碰撞也叫哈希碰撞,是指两个不同内容的输入,经过散列算法后,得到相同的输出,也就是两个不同的值的散列值相同

 

MD5-SQL注入

ffifdyop 的MD5加密结果是 276f722736c95d99e921722cf9ed621c

经过MySQL编码后会变成'or'6xxx,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密

文章来源: blog.csdn.net,作者:士别三日wyx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wangyuxiang946/article/details/119845182

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。