sql注入的诸多payoad利用
字数 1424 2025-10-18 12:57:47

SQL注入攻击技术详解:Payload利用与函数分析

一、UNION联合查询注入

文件读写函数注入

利用SELECT ... INTO OUTFILE语句实现文件写入:

',3 into outfile '/var/www/html/chuan.php' --+

此payload将查询结果写入web目录,创建可访问的PHP文件。

INFORMATION_SCHEMA跨库攻击

通过系统数据库获取所有数据库结构信息:

  • 查询所有数据库:SELECT schema_name FROM information_schema.schemata
  • 查询指定表结构:SELECT table_name FROM information_schema.tables WHERE table_schema='database_name'
  • 查询列信息:SELECT column_name FROM information_schema.columns WHERE table_name='table_name'

二、报错盲注技术

1. UPDATEXML函数报错注入

基本语法:

updatexml(xml_document, XPath_string, new_value)

利用原理:

  • 第一个参数(xml_document):任意XML文档对象
  • 第三个参数(new_value):任意更新值
  • 关键在第二个参数(XPath_string):注入非法XPath表达式触发报错

利用方式:
通过构造非法XPath表达式,使数据库报错并在错误信息中返回查询结果。

2. EXTRACTVALUE函数报错注入

基本语法:

extractvalue(xml_frag, xpath_expr)

利用原理:

  • 第一个参数(xml_frag):XML片段
  • 第二个参数(xpath_expr):注入非法XPath路径表达式
  • 函数处理无效XPath时产生报错,泄露数据信息

典型payload示例:

1' and extractvalue(1,concat(0x7e,(select group_concat(id,0x7e,username,0x3a,password) from security.users))) #

3. FLOOR函数报错注入

函数功能: 返回小于或等于给定数字的最大整数

利用方式:
GROUP BYCOUNT(*)等函数组合使用,通过触发数据库报错获取敏感信息。

技术特点:

  • 利用整数运算和分组操作产生重复键错误
  • 错误信息中包含子查询结果

三、数据截断技术

SUBSTRING函数应用

?id=1

通过截断函数限制返回数据长度,实现可控的信息泄露。

四、其他注入技术

1. 加解密注入

  • 利用数据库加密解密函数绕过过滤
  • 对payload进行编码解码操作

2. 二次注入

  • 首次输入被转义存储
  • 从数据库取出时被执行

3. DNSLOG注入

  • 利用DNS查询外带数据
  • 解决无回显场景的数据获取

4. 中转注入

  • 通过中间层转发请求
  • 绕过直接过滤机制

5. 堆叠查询注入

  • 执行多条SQL语句
  • 实现更复杂的攻击操作

五、防御绕过技术

严格过滤环境下的应对策略

  1. 编码绕过:使用十六进制、URL编码等
  2. 注释符利用--+#/* */
  3. 关键字拆分:通过连接符或特殊字符分隔敏感词
  4. 大小写混合:规避大小写敏感检测
  5. 空白符利用:Tab、换行符等替代空格

六、实战技巧

信息获取方法

  • 使用group_concat()合并多行结果
  • 利用concat()函数连接不同字段
  • 通过0x7e(~)等特殊字符作为分隔符
  • 使用limit子句控制返回数据量

错误信息利用

  • 分析数据库报错信息结构
  • 设计payload最大化信息泄露
  • 结合盲注技术提高攻击效率

本教学文档涵盖了SQL注入的核心技术要点,包括各种函数的利用原理、典型payload构造方法以及高级绕过技术,为深入理解SQL注入攻击提供了完整的技术框架。

SQL注入攻击技术详解:Payload利用与函数分析 一、UNION联合查询注入 文件读写函数注入 利用 SELECT ... INTO OUTFILE 语句实现文件写入: 此payload将查询结果写入web目录,创建可访问的PHP文件。 INFORMATION_ SCHEMA跨库攻击 通过系统数据库获取所有数据库结构信息: 查询所有数据库: SELECT schema_name FROM information_schema.schemata 查询指定表结构: SELECT table_name FROM information_schema.tables WHERE table_schema='database_name' 查询列信息: SELECT column_name FROM information_schema.columns WHERE table_name='table_name' 二、报错盲注技术 1. UPDATEXML函数报错注入 基本语法: 利用原理: 第一个参数(xml_ document):任意XML文档对象 第三个参数(new_ value):任意更新值 关键在第二个参数(XPath_ string):注入非法XPath表达式触发报错 利用方式: 通过构造非法XPath表达式,使数据库报错并在错误信息中返回查询结果。 2. EXTRACTVALUE函数报错注入 基本语法: 利用原理: 第一个参数(xml_ frag):XML片段 第二个参数(xpath_ expr):注入非法XPath路径表达式 函数处理无效XPath时产生报错,泄露数据信息 典型payload示例: 3. FLOOR函数报错注入 函数功能: 返回小于或等于给定数字的最大整数 利用方式: 与 GROUP BY 和 COUNT(*) 等函数组合使用,通过触发数据库报错获取敏感信息。 技术特点: 利用整数运算和分组操作产生重复键错误 错误信息中包含子查询结果 三、数据截断技术 SUBSTRING函数应用 通过截断函数限制返回数据长度,实现可控的信息泄露。 四、其他注入技术 1. 加解密注入 利用数据库加密解密函数绕过过滤 对payload进行编码解码操作 2. 二次注入 首次输入被转义存储 从数据库取出时被执行 3. DNSLOG注入 利用DNS查询外带数据 解决无回显场景的数据获取 4. 中转注入 通过中间层转发请求 绕过直接过滤机制 5. 堆叠查询注入 执行多条SQL语句 实现更复杂的攻击操作 五、防御绕过技术 严格过滤环境下的应对策略 编码绕过 :使用十六进制、URL编码等 注释符利用 : --+ 、 # 、 /* */ 关键字拆分 :通过连接符或特殊字符分隔敏感词 大小写混合 :规避大小写敏感检测 空白符利用 :Tab、换行符等替代空格 六、实战技巧 信息获取方法 使用 group_concat() 合并多行结果 利用 concat() 函数连接不同字段 通过 0x7e (~)等特殊字符作为分隔符 使用 limit 子句控制返回数据量 错误信息利用 分析数据库报错信息结构 设计payload最大化信息泄露 结合盲注技术提高攻击效率 本教学文档涵盖了SQL注入的核心技术要点,包括各种函数的利用原理、典型payload构造方法以及高级绕过技术,为深入理解SQL注入攻击提供了完整的技术框架。