web安全的学习之路(五)

本文深入解析SQL注入中布尔盲注技术,介绍其工作原理、攻击方法及使用Burp Suite工具进行爆破的技巧。布尔盲注适用于仅能观察到语句执行成功或失败的场景,通过穷举方式推测关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是布尔盲注

上一篇文章介绍了union的注入攻击,这次来介绍一下布尔盲注。
在注入时,我们输入代码,期望能够让数据库中的数据被我们所查询到,但是,有的时候,网页返回的结果并不是如我们所愿,当我们尝试查询数据库中的信息的时候,页面总是只返回两个结果——语句执行或者没有执行。这时候,就需要使用到布尔盲注的方式了,通过穷举的方式一步步推测出正确的用户名,密码之类的关键信息

布尔盲注的攻击方法

首先,和union的方法相同,我们首先测试是否存在SQL注入的漏洞。
判断完了是否存在漏洞,那么如何确定需要使用布尔盲注的方法呢?我们在测试是否存在SQL注入漏洞的时候输入的代码

id=1 and 1=1 和 id = 1' and 1=1 

id=1 and 1=1 和 id = 1' and 1= 2 

如果返回的页面只有正确和错误的话(这里可以使用burpsuit 抓包看一下)那么就确定使用的是布尔盲注的方法了。
确定了攻击方式,接下来就来获取数据库的名称吧

and length(database())>=1--+

以上代码在1的位置是随意修改的,这里就要让大家自己测试了。
获得了数据库的名称位数,由于不能直接查询,所以手工注入的话使用以下语句进行猜测:

and substr(database(),1,1)='t'--+

以上语句中字母t是可以改变的,通过一个一个字母的猜测,最终可以确定数据库的名称。
接着查询字段名称:

and substr((select table_name from information_schema.tables where table_schema='sql' limit 0,1),1,1)='a'--+

以上语句中sql指的是之前注入出来的数据库名称,a指的是猜测的第一个字段名的第一个字母。有关于limit语句的用法详见上一篇博客。
通过以上语句可以对字段名进行一个一个的猜测。最终可以确定所有的表名和字段名。

使用工具爆破

从上文的手工注入的过程就可以知道布尔盲注的手工过程是非常复杂的,所以我们使用工具进行注入,这里还是建议使用我们的神器burpsuit,操作方式就不放上来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值