盲注
当你的输入没有回显,也没有报错的时候,但是输入正确和错误的值时,页面有不同表现时,这时候我们可以尝试使用布尔盲注布尔盲注
拿sqli-labs第八关来举列
首先输入id=1,页面显示如下:
文章图片
输入id=1’,页面出现不同结果,判断有闭合:
文章图片
再次输入id=1",页面结果显示正常,初步判断语句闭合为单引号闭合:
文章图片
接下来,我们就可以先尝试判断当前数据库的长度,然后再拆解表名,但是这里省略这一步,直接判断当前数据库有多少个表,构造语句开始尝试:
PS:因为手工注入非常的耗费时间,所以我这里采用半自动化,也就是利用burpsuit的爆破功能,如果采用纯手工的话,语句建议采用>号,然后使用二分法缩减数字,这样效率较高
文章图片
这里打开burpsuit,启用拦截功能,注意浏览器要切换到8080端口,这里我是用了火狐自带的插件切换端口,将拦截到的包发送到如下板块,开始暴力破解:
文章图片
得出结果为4:
文章图片
在页面中测试,结果正确:
文章图片
得出了表的数量,接下来开始猜测每个表长度,同样借助burpsuit:
构造语句:
文章图片
burpsuit暴力破解:
文章图片
文章图片
文章图片
得出了有多少个表,表的长度为多少,接下来,我们就可以开始猜解表名了,这里需要用到两个函数,详细解释可以自行百度:
ascii:返回字符的ascii值先构造语句:
substr:截取字符作用
文章图片
借助burpsuit逐步猜解每个表名:
第一个表,前面已经得知长度为6,接下来就是猜测每个数据,因为这里是在靶场,所以我的范围只设置为小写字母,也就是97~122,实战中,有可能会出现某些字符和大小写,这里为了节约时间,就只假设为小写字母,利用burp破解得出,对照ascii码表,得出结果为:emails
文章图片
第二个表,长度为8:
文章图片
得出结果:referers
文章图片
第三个表,长度为7,利用burpsuit得出结果:uagents
文章图片
第四个表,长度为5,得出结果为:users
文章图片
猜解完表名,可以发现,关键表应该是users,那么接下来应该就是猜解关键字段了,先判断字段数:
构造语句:
文章图片
借助burpsuit,得出字段数为3:
文章图片
接下来,判断每个字段的长度:
构造语句:
文章图片
借助burpsuit得出结果,第一个字段长度为2,第二个和第三个长度为8:
文章图片
接下来,就是猜解每个字段数了,步骤和前面都差不多:
构造语句:
文章图片
借助burpsuit得出结果为id:
文章图片
第二个字段:
【初学Web安全之sql注入(四)—— 盲注(1)】结果为username:
文章图片
第三个字段,结果为password:
文章图片
判断出关键列为username和password,接下来就是获取账号密码了,通常管理员账号密码都是在第一个:
构造语句,获取第一个username的长度:
文章图片
文章图片
猜解名字:
文章图片
PS:注意,实战中账号密码可能是数字大小写字母和符号组成,这时候可以使用字典工具生成文件,导入到burpsuit里面进行暴力破解,因为这里是在靶场,所以使用的还是数字破解得出结果为Dumb:
文章图片
接下来就是对password的猜解了,这里就直接上图片演示:
长度为4:
文章图片
破解出密码也为Dumb:
文章图片
到这里,布尔盲注就完成了,上面的步骤是借助了工具,纯手工的话,可以用>号,再借助二分法缩减数字,这样效率较高,也可以慢慢猜解出来。