1.PHP弱类型
===和==的区别:
===在进行比较时,会先判断类型是否相同,再进行比较
== 在进行比较时,会先将字符串类型转化相同,再比较
转换规则:
字符串的开始部分决定了它的值,如果以合法的数值开始,则使用该数值,否则为0
eg. admin==0
1admin=1
0e123456==0e456789 相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等
2.MD5比较绕过
(1)不完全比较绕过
a!=b (此处!=表示严格不等于 !==表示不等于)
但md5(a)==md5(b)
思路:找到两个均为0e开头的md5值的a和b
符合要求的md5:
$a md5($a)
QNKCDZO 0e830400451993494058024219903391
240610708 0e462097431906509019562988736854
s878926199a 0e545993274517709034328855841020
s155964671a 0e342768416822451524974117254469
s214587387a 0e848240448830537924465865611904
特例:
如果出现要求 a=md5(a)
$a md5($a)
0e00275209979 0e551387587965716321018342879905
0e00506035745 0e224441551631909369101555335043
0e00540451811 0e057099852684304412663796608095
0e00678205148 0e934049274119262631743072394111
0e00741250258 0e899567782965109269932883593603
0e00928251504 0e148856674729228041723861799600
特特例:
双重md5加密后的0e字符串
$a md5(md5($a))
7r4lGXCH2Ksu2JNT3BYM 0e48d320b2a97ab295f5c4694759889f
CbDLytmyGm2xQyaLNhWn 0e3a5f2a80db371d4610b8f940d296af
770hQgrBOjrcqftrlaZk 0e2756da68ef740fd8f5a5c26cc45064
(2)null值绕过
题目要求:
$a!=$b
md5($a)===md5($b)
对于这种强比较问题,使用两个不同的数组 使其值均为null,实现绕过
a[]=1&b[]=2
(3)碰撞绕过
题目要求:
(string)$a!==(string)$b
md5($a)===md5($b)
思路:找到两个不同的数据,md5加密后相同
url编码数据1:
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
url编码数据2:
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
#md5(urldecode())结果均为008ee33a9d58b51cfeb425b0959121c9
(4)特殊md5值
问题:
select * from 'admin' where password=md5($pass,true)
解答:
ffifdyop 这个字符串被md5哈希会变成276f722736c95d99e921722cf9ed621c
这几个字符前几位刚好是or‘6,而mysql刚好又会把hex转成ascii解释,
因此拼接后就是where password = "or '6xxxx'.(为什么是永真式呢,因为6xxxxx,其实在布尔判断中是相当于true的)
等价于一个or永真式,相当于万能密码,绕过md5了
(5)文件绕过
linux使用md5collgen碰撞生成两个md5值相同但内容不同的文件
md5collgen -o 1.bin 2.bin
windows可以下载fastcoll,碰撞生成两个md5值相同但内容不同的文件
fastcoll.exe -p 123.txt -o 1.txt 2.txt
标签:72%,hash,--,blogs,5f%,7b%,绕过,4b%,md5 From: https://www.cnblogs.com/heck1ng/p/17989079