由于DBMS大部分都使用通用语言(SQL),因此基本功能和语法实际上是通用的。这意味着在DBMS上的绕过技巧可能会应用在不同的数据库中。实战中没有遇到过postgresql。有更好的绕过方式再继续添加
空格被绕过
- +
- 注释符
and/or 被绕过
- 双写
- 大小写
- 内联注释
- 编码
- unicode
- utf-8
- url
单引号被过滤
$$
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$$;
)比较符(><) 被过滤/拦截
between a and b
等号 被过滤/拦截
- like
><
注释符 被过滤/拦截
- 手动闭合