由于DBMS大部分都使用通用语言(SQL),因此基本功能和语法实际上是通用的。这意味着在DBMS上的绕过技巧可能会应用在不同的数据库中。实战中没有遇到过postgresql。有更好的绕过方式再继续添加
空格被绕过
- +
-
and/or 被绕过
双写
- 大小写
- 内联注释
编码
$$
select 'test'
-- 等价于
select $$test$$
$quote$
-- 适用于当$$ 不能利用的情况下
select $quote$test$quote$
CHR
SELECT CHR(65)||CHR(66)||CHR(67)||CHR(68)||CHR(69)||CHR(70)||CHR(71)||CHR(72);
-- 等效于
SELECT 'ABCDEFGH';
注意:您不能同时使用’、$$ 、$quote$,因此,如果您需要转义以单引号开头的字符串,则将无法使用(即这种语句是无效的SELECT ‘test;)
比较符(><) 被过滤/拦截
-
等号 被过滤/拦截
like
注释符 被过滤/拦截
手动闭合