AI 助教问 AI 助教
东方瑞通 · CISP-PTE

宽字节注入、二次注入与 WAF 绕过

宽字节注入利用 GBK 编码吞掉转义反斜杠,二次注入利用数据入库后被二次拼接,WAF 绕过通过编码、注释、大小写等手法规避过滤。

考点精讲

  1. 宽字节注入:GBK 编码下 %df' 与转义反斜杠 \(%5c)组成 %df%5c 一个汉字,从而吞掉反斜杠逃逸单引号。二次注入:恶意数据先入库保存,在后续被二次读取并拼入 SQL 时触发注入。WAF 绕过手法:大小写绕过、双写绕过、注释符 /**/ 分隔、URL 编码、等价函数替换等。

记忆技巧

%df 吞反斜杠 = 宽字节注入核心
二次注入 = 先存进库、再被拼进去触发

常见误区

  • 以为转义单引号就绝对安全——宽字节可绕过
  • 忽略二次注入——数据入库后再次拼接时才触发
  • 以为 WAF 无法绕过——编码、注释等手法众多

真题思路

  • 【示例】 某站使用 GBK 编码,并对单引号做了转义。攻击者提交 %df' 后单引号未被成功转义,其原因是()
    服务器没有做任何过滤 %df 与转义反斜杠组成 GBK 字符,吞掉了反斜杠 WAF 被双写绕过 使用了等价函数替换
    答案:B
    解析:GBK 编码下 %df 与反斜杠 %5c 组成一个 GBK 汉字,把用于转义的反斜杠吞掉,导致单引号逃逸,属于宽字节注入,B 正确。A、C、D 均与题干场景不符。

常见问题

Q:宽字节注入为什么能吞掉反斜杠?

A:GBK 编码下,%df 与转义产生的反斜杠 \(%5c)组合成 %df%5c,恰好构成一个 GBK 汉字,从而把用于转义单引号的反斜杠「吞掉」,使单引号逃逸出来,完成注入。

Q:二次注入和普通注入有什么区别?

A:普通注入是恶意数据直接参与本次查询并立即生效;二次注入是恶意数据先被存入数据库(入库时可能被转义/过滤),之后在其它功能中被二次读取并再次拼入 SQL 时才触发注入。

Q:WAF 常见绕过方式有哪些?

A:大小写绕过、双写绕过、注释符(/**/)分隔关键字、URL 编码、等价函数替换等。

Q:双写绕过是什么?

A:针对 WAF 把敏感关键字替换为空的过滤,攻击者把关键字写成重复形式(如 seselectlect),WAF 替换掉中间的 select 后剩下的仍是 select,从而绕过过滤。

相关知识

教材出处:第4章 Web 漏洞 宽字节注入、二次注入与 WAF 绕过

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑