SQL注入之布尔型盲注

本文详细介绍了SQL注入中的布尔型盲注,包括确认注入点、判断数据库版本、查询数据库名称、数据表名及列名等步骤,通过示例展示了如何利用布尔判断进行数据获取。

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

什么是布尔判断SQL注入?

“布尔判断”指的是利用SQL语句**逻辑与(and)**操作,判断and两边的条件是否成立,SQL语句带入输入库查询后判断返回内容(通常返回值仅有非空和空两种状态),类似布尔型的true和false的两种状态。

布尔盲注步骤:

第1步:确认注入点

方法:通过增加 ’ 和增加--+注释符,语句从执行失败变为执行成功判断注入点

第2步:判断数据库版本

方法:主要因为5.0版本以下没有information_schema数据库,无法进行手动注入; 由于无法回显数据,利用逻辑操与数据库版本第1位数字字符做判断; 语句:?id=1' and left(version(),1)=5 --+

第3步:判断当前查询数据库的长度

方法:由于无法回显数据,先判断当前数据库的长度,减小后面猜解数据库名称工作量; 语句:?id=1' and length(database())>8 --+

第4步:猜解当前数据库名称(本步骤需要重复)

方法:利用第3步确认的数据库长度,结合substr函数,一个一个字符猜解,利用二分法; 语句:?id=1' and ascii(substr(database(),1,1))>110 --+

第5步:猜解数据库名

方法:猜解方法和第4步类似,通过substr和ascii函数来判断和猜解,函数一样,语句复杂些; 语句:?id=1' and ascill(substr((select schema_name from information_schema.schemata limit 0,1),1,1))>98 --+

1)如何猜解第一个表的第二个字符?

方法:substr (***,2,1);substr函数的起始

### SQL 注入中的布尔盲注与延时注入 #### 布尔盲注基本原理 在布尔盲注中,攻击者通过发送特定的SQL查询来判断数据库响应的变化,从而推断出数据库的内容。这种技术依赖于应用程序基于不同的输入条件给出不同类型的反馈。例如,当存在漏洞的应用程序接收到恶意构造的SQL语句后,可能会因为真假结果而表现出两种截然不同的行为模式。 对于布尔型来说,通常会利用`AND`或`OR`逻辑运算符附加一个猜测性的表达式到原始查询上,并观察页面输出是否有变化[^4]。如果目标字段的第一个字符等于某个预设值,则整个请求可能成功并返回正常页面;反之则可能导致错误或其他异常情况发生。 ```sql ' AND ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables LIMIT 1),1,1))=97 -- ``` 此代码片段尝试验证第一个表名首字母是否为'a'(ASCII码97),以此类推逐步获取更多信息。 #### 时间延迟注入基本原理 时间基则是另一种形式的SQL注入攻击方式,在某些情况下即使无法直接看到应用层面上的具体差异也能够实施有效探测。其核心在于向服务器发出带有特殊指令(如SLEEP())的SQL命令让后者暂停执行一段时间再继续处理剩余部分。由于网络传输本身存在一定耗时特性加上人为引入额外等待期使得整体响应周期明显延长,因此可以通过测量前后两次访问所需的时间间隔大小来进行分析比较进而确认假设成立与否。 下面是一个典型例子: ```sql ' OR IF(ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT 1),1,1))=98,SLEEP(5),false) -- ``` 这段脚本用来检测名为“users”的表格里首个列名称开头是不是'b'(ASCII码98),假如匹配上了就会触发休眠操作使HTTP回复变缓。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值