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

空格被绕过

  1. +
  2. 注释符

and/or 被绕过

  1. 双写
  2. 大小写
  3. 内联注释
  4. 编码
    1. unicode
    2. utf-8
    3. url

单引号被过滤

  1. $$

    select 'test'
    -- 等价于
    select $$test$$
    
  2. $quote$

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

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

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

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

  4. between a and b

等号 被过滤/拦截

  1. like
  2. ><

注释符 被过滤/拦截

  1. 手动闭合
Copyright © aaron 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-06-06 13:02:12

results matching ""

    No results matching ""