mysql 报错注入,一种 SQL 注入攻击技术

时间:2025-10-13 11:36

MySQL 报错注入是一种 SQL 注入攻击技术,攻击者通过构造特殊的 SQL 语句,使数据库在执行时产生错误信息,从而泄露数据库结构、数据内容等敏感信息。这种攻击利用了数据库错误信息中包含的详细信息(如表名、列名、数据类型等)来获取数据。

常见的报错注入原理

当应用程序未对用户输入进行严格过滤,且会将数据库错误直接返回给用户时,攻击者可以通过构造包含错误触发函数的 SQL 语句,迫使数据库返回包含敏感信息的错误提示。

常用的报错注入函数(MySQL)

  1. extractvalue()用于从 XML 字符串中提取值,当参数不符合 XML 格式时会报错,可用于泄露信息:
    sql
    and extractvalue(1,concat(0x7e,(select user()),0x7e))
    
     
     
  2. updatexml()用于更新 XML 文档,参数错误时会报错:
    sql
    and updatexml(1,concat(0x7e,(select database()),0x7e),1)
    
     
     
  3. floor() + rand() + group by利用 MySQL 分组统计时的特性触发错误:
    sql
    and (select 1 from (select count(*),concat((select user()),floor(rand(0)*2))x from information_schema.tables group by x)a)
    
     
     

防范措施

  1. 严格过滤用户输入:对所有用户输入进行合法性校验,过滤特殊字符和 SQL 关键字。
  2. 使用参数化查询:采用预编译语句(如 PDO、PreparedStatement),避免直接拼接 SQL 字符串。
  3. 关闭错误信息暴露:在生产环境中禁用数据库错误信息直接返回给用户,改为自定义错误提示。
  4. 限制数据库用户权限:应用程序连接数据库的账号应仅授予必要权限,避免使用 root 等高权限账号。
  5. 定期安全审计:检查应用程序代码中可能存在的注入漏洞,及时修复。
报错注入会严重威胁数据库安全,开发时必须做好输入验证和输出过滤,从根本上防止 SQL 注入攻击。
内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点深度分析
内网ip远程控制,借助内网IP实现远程控制的完整指南
远程访问内网IP:打破网络边界的连接艺术
理解Windows系统中的NAT转发功能
内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点分析
手把手配置SSR端口转发:UDP协议支持与高级设置详解
什么是nat123?nat123的核心功能
nat123端口映射:轻松实现外网访问内网
nat123下载:轻松获取内网穿透工具
nat123官网:老牌内网穿透工具