【CTF-web】MD5绕过

Author Avatar
白菀枯
发表:2024-07-20 11:39:33
修改:2024-07-20 11:39:33

1. 0e+数字 弱相等

如果两段字符md5后都是0e12345这样的形式,那么它俩==

  • 常见的有:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

0e215962017

  • 它们均==

0e830400451993494058024219903391

0e462097431906509019562988736854

0e545993274517709034328855841020

0e342768416822451524974117254469

0e848240448830537924465865611904

0e291242476940776845150308577824

  • 0e215962017的md5后0e291242476940776845150308577824 ,有$a==md5($a)

  • 原理是,0e为科学计数法,而0的任意次方均为0

2. 数组绕过

$a = $_GET["a"];
$b = $_GET["b"];
print_r(var_dump(md5($a) === md5($b)));

传入:a[]=1&b[]=2 ,结果为真

  • 原因是数组md5后返回了null

  • =====均为true

  • php8失效

3. md5 碰撞(强类型绕过)

字符串不同但md5后相同

题目要求如$a!==$b&md5($a)===md($b)

可用fastcoll工具寻找,使用方式:将文件拖到该exe上,生产的两个文件内容不同,md5值相同

4. 与sql注入

ffifdyop,这个MD5加密后276f722736c95d99e921722cf9ed621c 其中的276f722736刚好是十六进制的'or'6 ,而mysql会把hex转化为ASCII,形成了where password='' or '6xxxxx'的闭合

参考:

  1. 总结ctf中 MD5 绕过的一些思路_ctf md5-CSDN博客

  2. PHP md5 相等绕过 - Ainsliaea - 博客园 (cnblogs.com)

评论