4-16

and or 被过滤怎么绕过

1. 利用逻辑运算符的符号替代

在某些情况下,WAF(Web Application Firewall)可能只过滤了关键字,而忽略了它们的符号表示

  • && 替代 and 在 MySQL 中,&&and 的功能相同。如果 and 被过滤,可以尝试使用 &&
  • || 替代 or 同样,|| 可以替代 or 来进行逻辑或操作。

Payload 实例:

  • 原始注入: id=1 and 1=2
  • 绕过: id=1 && 1=2

2. 利用!<>not 等操作符

通过巧妙地结合其他逻辑或比较操作符,我们可以构造出等价的判断逻辑

  • and 的替代:
    • if not (a=1) then ... 等价于 if a<>1 then ...
    • 我们可以利用 not<> 来否定条件,从而实现 and 的效果
    • 例如: username=admin' or not ('1'='1' and '1'='2') 这句可以被改写为 username=admin' or not (1=1),这在逻辑上是错误的,我们可以利用它来测试
    • 更具体的绕过: id=1 and 1=2 可以被改写为 id=1 or not 1=1,这在布尔盲注中可以用来判断