欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 不同数据库的注入报错信息

不同数据库的注入报错信息

2025/4/15 19:31:13 来源:https://blog.csdn.net/w2361734601/article/details/147197784  浏览:    关键词:不同数据库的注入报错信息

不同数据库在报错注入时返回的报错信息具有显著差异,了解这些差异可以帮助快速判断数据库类型并构造针对性的注入攻击语句。以下是主流数据库的典型报错模式及对比:


目录

​​

1. MySQL​​

​​2. Microsoft SQL Server​​

​​3. Oracle​​

​​4. PostgreSQL​​

​​5. SQLite​​

​​对比表​​

​​实战应用:通过报错快速判断数据库类型​​

​​防御建议​​


1. MySQL​

​报错特征​​:

  • 关键词"You have an error in your SQL syntax"
  • 错误中包含near关键字(显示错误位置)。
  • 使用特定函数触发报错(如extractvalueupdatexml)。

​示例​​:

' AND updatexml(1,concat(0x7e,version()),0) --+

​错误信息​​:

XPATH syntax error: '~5.7.38-log'

​其他特征​​:

  • 错误代码以1064开头(语法错误通用代码)。
  • 默认关闭详细错误(需配置display_errors=On才会显示完整信息)。

​2. Microsoft SQL Server​

​报错特征​​:

  • 关键词"Conversion failed""Incorrect syntax"
  • 错误信息格式清晰,明确提示数据类型或语法问题。
  • 错误代码前缀为Msg 245Msg 8114等(不同代码代表不同问题)。

​示例​​:

' AND 1=convert(int,@@version) --+

​错误信息​​:

Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2019...' to data type int.

​其他特征​​:

  • 可利用错误堆栈信息泄露敏感数据(如error=后的内容)。

​3. Oracle​

​报错特征​​:

  • 标准错误前缀"ORA-xxxxx"(如ORA-01756)。
  • 错误信息直接提示具体问题(如quoted string not properly terminated)。
  • 依赖精度或类型转换错误触发信息泄露。

​示例​​:

' AND 1=ctxsys.drithsx.sn(1,(select banner from v$version where rownum=1)) --+

​错误信息​​:

ORA-20000: Oracle Database 19c Enterprise Edition...

​其他特征​​:

  • 系统视图如v$versionuser_tables常用于泄露信息。
  • 报错空间限制较严格(需通过substr()分段获取数据)。

​4. PostgreSQL​

​报错特征​​:

  • 关键词"ERROR:"开头,错误信息简洁。
  • 类型转换或函数参数不匹配时触发详细报错。
  • 错误代码格式如22P02(无效文本表示)。

​示例​​:

' AND 1=cast(version() as int) --+

​错误信息​​:

ERROR: invalid input syntax for integer: "PostgreSQL 14.4..."

​其他特征​​:

  • 可利用pg_read_file等函数泄露文件内容。

​5. SQLite​

​报错特征​​:

  • 错误信息较简洁,格式为"Error: near ...: syntax error"
  • 错误可能提示未找到表名或列名。

​示例​​:

' AND 1=load_extension(0,char(116,101,115,116)) --+

​错误信息​​:

Error: not authorized to use function: load_extension

​对比表​

数据库典型报错触发方式错误前缀或关键词示例函数/句法
​MySQL​XPATH函数、除零错误syntax error + nearupdatexmlextractvalue
​SQL Server​类型转换(如convertMsg 8114Conversion failedconvert(int,@@version)
​Oracle​精度错误或虚拟表访问ORA-xxxxxctxsys.drithsx.sn()
​PostgreSQL​类型转换(如castERROR: + 错误代码(如22P02cast(version() as int)
​SQLite​未授权函数调用Error: near ...load_extension()

​实战应用:通过报错快速判断数据库类型​

  1. ​触发一个可控错误​​:
    输入 ' AND 1=invalid_func(1) --
    观察错误信息:

    • XPATH错误 → ​​MySQL​
    • invalid functionMsg → ​​SQL Server​
    • ORA-00904 → ​​Oracle​
    • ERROR: function invalid_func → ​​PostgreSQL​
  2. ​校验函数是否存在​​:
    探测数据库特有函数(如Oracle的dbms_xmlgen.getxml):

    ' AND dbms_xmlgen.getxml('select 1 from dual')=1 --+

​防御建议​

  1. ​关闭详细错误​​:禁止返回数据库原始错误信息(显示统一提示页面)。
  2. ​参数化查询​​:使用预编译语句(如PreparedStatement)。
  3. ​权限控制​​:数据库账号仅授予最低权限。

通过结合错误特征和数据库特有函数,可以快速定位目标数据库类型,并调整攻击策略(如改用特定于该数据库的注入手法)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词