由于DBMS大部分都使用通用语言(SQL),因此基本功能和语法实际上是通用的。这意味着在DBMS上的绕过技巧可能会应用在不同的数据库中。实战中没有遇到过postgresql。有更好的绕过方式再继续添加

空格被绕过

  1. +
  2. 注释符

    and/or 被绕过

  3. 双写

  4. 大小写
  5. 内联注释
  6. 编码

    1. unicode
    2. utf-8
    3. url

      单引号被过滤

  7. $$

    1. select 'test'
    2. -- 等价于
    3. select $$test$$
  8. $quote$

    1. -- 适用于当$$ 不能利用的情况下
    2. select $quote$test$quote$
  9. CHR

    1. SELECT CHR(65)||CHR(66)||CHR(67)||CHR(68)||CHR(69)||CHR(70)||CHR(71)||CHR(72);
    2. -- 等效于
    3. SELECT 'ABCDEFGH';

    注意:您不能同时使用’、$$ 、$quote$,因此,如果您需要转义以单引号开头的字符串,则将无法使用(即这种语句是无效的SELECT ‘test;)

    比较符(><) 被过滤/拦截

  10. between a and b

    等号 被过滤/拦截

  11. like

  12. <

    注释符 被过滤/拦截

  13. 手动闭合