知识点:
- 布尔盲注
- 无任何有价值的回显;但是回显信息只有两种(区别正确和错误)
- 通过布尔盲注爆破处正确的信息
- 利用过滤条件对数据进行过滤;只显示自己想要的信息
尝试进行admin admin登录发现没有任何的回显信息
通过bp抓包进行注入尝试
构造payload:username=a'+or+1=1#
成功登录了;说明这里存在注入点
没有任何的回显信息
尝试进行错误注入
构造payload:username=a'+or+exp(710)#
发现仍然没有任何返回结果;说明这里不能使用错误注入
由于返回结果是由不同的;所以可以使用布尔盲注
首先要获取数据库的长度信息;
构造payload:username=a'+or+length(database)=8#
显示成功登录;说明数据库长度为8
获取了数据库的长度;接下来就可以进行数据库名的爆破了
构造payload:username=a'+or+substr(database(),1,1)='s'#
成功登录;说明可以进行按位爆破了(这里是我知道数据库名;所以进行测试的)
下面把数据包放到爆破模块中
对截取函数的初始位和匹配位位进行标记;采用cluster bomb进行爆破
设置和之前一样;payload1采用数字模式,设置步长为1,起始位为1,结束位为8;payload2采用burte force模式;设置最大和最小长度为1;点击爆破
得到了爆破的内容;正确的响应包和错误的响应包长度不同;通过排序发现长度为1723的为正确的响应包;
可以发现是乱序的;这里无法通过长度进行过滤;仔细查看响应包发现正确界面和错误界面的区别在于使用了不同的图片;正确为flag.jpg 错误为slap.jpg
这里可以利用图片名的不同进行过滤(这属于响应包的内容)
点击上面的filter,会弹出一个过滤的框;再过滤框中输入flag.jpg,点击应用会获取到长度为1723的信息;通过payload1进行排序会获得正确顺序的数据库名
到这里就结束了;同样的方法可以爆破处数据库的其他敏感信息;之前关卡中已经试验过了;这里就不再做了
10