SQL注入之布尔盲注

布尔盲注是一种基于布尔逻辑的SQL注入攻击技术,主要用于在无法直接获取数据库报错信息的情况下,通过观察应用程序对不同SQL语句执行结果的响应差异来推断数据库中的信息。

基础知识:

length()  //获取字符串的长度
select LENGTH(database());
//可以拿到当前数据库的库名的长度
select LENGTH(database())>5;
//可以依据length函数来对当前数据库的库名长度进行猜测,如果条件为真,则返回1,如果条件为假,则返回0

判断库名所包含的字符
substr() 通过此函数来进行字符串的截取
substr (string string,num start,num length); string为字符串;start为起始位置;length为长度。注意:mysql中的start是从1开始的。
select substr(database(),1,1)='s' //来判断库名的字符,如果为真返回1,为假返回0

通过ASCII码去判断字符
ascii(); 通过此函数来获取字符的ASCII码
select ascii(substr(database(),1,1))=115 //通过ascii码判断库名的字符,为真返回1,为假返回0

通过转换为ascii码,可以提高布尔盲注猜测库名的速度,采用二分法较为快速地判断出库名地每个字符

ascii表如下

注:此方法仅限于ascii字符集,若库名中含有ascii字符集以外的字符如中文,则无法使用此方法

为了提高效率,可以选择采用burpsuite进行自动爆破

在match中输入无结果的返回信息,可以快速筛选出需要的正确注入结果

### SQL 注入中的布尔盲注与延时注入 #### 布尔盲注基本原理 在布尔盲注中,攻击者通过发送特定的SQL查询来判断数据库响应的变化,从而推断出数据库的内容。这种技术依赖于应用程序基于不同的输入条件给出不同类型的反馈。例如,当存在漏洞的应用程序接收到恶意构造的SQL语句后,可能会因为真假结果而表现出两种截然不同的行为模式。 对于布尔型盲注来说,通常会利用`AND`或`OR`逻辑运算符附加一个猜测性的表达式到原始查询上,并观察页面输出是否有变化[^4]。如果目标字段的第一个字符等于某个预设值,则整个请求可能成功并返回正常页面;反之则可能导致错误或其他异常情况发生。 ```sql ' AND ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables LIMIT 1),1,1))=97 -- ``` 此代片段尝试验证第一个表名首字母是否为'a'(ASCII97),以此类推逐步获取更多信息。 #### 时间延迟注入基本原理 时间基盲注则是另一种形式的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'(ASCII98),假如匹配上了就会触发休眠操作使HTTP回复变缓。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值