buuctf [BJDCTF2020]Easy MD5
一、解题思路
1.前面简单的步骤就不赘述了,直接抓包
**2.返回的信息中,可以直接看到提示
Hint: select * from 'admin' where password=md5($pass,true)
可以看到无论我们输入的什么参数都会被md5加密,这里又有一个精髓是——
ffifdyop
进行
md5
加密,这里比较巧的是经过
md5
加密后的数据,
276f722736c95d99e921722cf9ed621c
,**
**3.可以看到加密后的md5看着像十六进制编码,MySQL将十六进制转换为hex()通过加密后的md5值,使用hex解码
'or'6�]��!r,��b
,可以看到永真**
**4.这里就使用的是这个漏洞利用点,绕过md5()编码
ffifdyop
绕过**
5.成功绕到下一步
6.继续抓包,看到右边的提示
**7.根据返回的信息的提示,需要绕过的是md5的弱等于,它的要求是变量1和变量2要求不相等,然而,通过md5加密后的结果要进行相等。常用方式——
使用数组进行绕过
?a[]=1&b[]=2
**
8.进入到下一关,使用的md5的强碰撞,
**9.还是使用数组绕过
param1[]=1¶m2[]=2
**
二、知识点总结
**1.
ffifdyop
经过
md5
加密后,使用
hex
解码可以转换为
'or'
默认将十六进制数转换为MySQL
;hex()
3…md5的强连接和弱连接使用
绕过;**数组
版权归原作者 山川绿水 所有, 如有侵权,请联系我们删除。