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
,这在布尔盲注中可以用来判断