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 BY和COUNT(*)等函数组合使用,通过触发数据库报错获取敏感信息。
技术特点:
- 利用整数运算和分组操作产生重复键错误
- 错误信息中包含子查询结果
三、数据截断技术
SUBSTRING函数应用
?id=1
通过截断函数限制返回数据长度,实现可控的信息泄露。
四、其他注入技术
1. 加解密注入
- 利用数据库加密解密函数绕过过滤
- 对payload进行编码解码操作
2. 二次注入
- 首次输入被转义存储
- 从数据库取出时被执行
3. DNSLOG注入
- 利用DNS查询外带数据
- 解决无回显场景的数据获取
4. 中转注入
- 通过中间层转发请求
- 绕过直接过滤机制
5. 堆叠查询注入
- 执行多条SQL语句
- 实现更复杂的攻击操作
五、防御绕过技术
严格过滤环境下的应对策略
- 编码绕过:使用十六进制、URL编码等
- 注释符利用:
--+、#、/* */ - 关键字拆分:通过连接符或特殊字符分隔敏感词
- 大小写混合:规避大小写敏感检测
- 空白符利用:Tab、换行符等替代空格
六、实战技巧
信息获取方法
- 使用
group_concat()合并多行结果 - 利用
concat()函数连接不同字段 - 通过
0x7e(~)等特殊字符作为分隔符 - 使用
limit子句控制返回数据量
错误信息利用
- 分析数据库报错信息结构
- 设计payload最大化信息泄露
- 结合盲注技术提高攻击效率
本教学文档涵盖了SQL注入的核心技术要点,包括各种函数的利用原理、典型payload构造方法以及高级绕过技术,为深入理解SQL注入攻击提供了完整的技术框架。