0%

sqlmap相关命令

sqlmap版本:1.4.6

借鉴了网上几位大佬的总结,自己也加了一些

选项

-h,--help  显示基本帮助信息并退出
-hh        显示高级帮助信息并退出
--version  显示程序版本信息并退出
-v VERBOSE 信息级别: 0-6 (缺省1)
其值具体含义:
“0”只显示python错误以及严重的信息;
“1”同时显示基本信息和警告信息(默认);
“2”同时显示debug信息;
“3”同时显示注入的payload;
“4”同时显示HTTP请求;
“5”同时显示HTTP响应头;
“6”同时显示HTTP响应页面;
如果想看到sqlmap发送的测试payload最好的等级就是3。

获取目标

-d:直接连接数据库 (-d “mysql://user:passward@地址:端口/数据库名称”)

  1. get方法
    -u:指定url (?id=1)
    -l:从Brupsuite proxy或WebScarab proxy中读取http请求日志文件
    -x:从sitemap.xml站点地图文件中读取目标探测
    -m:从多行文本格式文件读取多个目标,对多个目标进行探测
    -r:丛文本文件中读取http请求作为SQL注入探测的目标
    -c:从配置文件sqlmap.conf中读取目标探测
    -g:google搜索出来的结果 (-g “inurl:\”.php?id=1\””)\”只是将双引号内的”特殊字符进行转义

  2. post方法
    -data:-u “http://xxx.xxx.xxx“ —data=”post请求抓取的源代码”

请求参数

HTTP数据

  1. 数据段: -data
    get/post都适用
    对于post还可以使用链接并将post抓取的源代码用—data,并输入抓取的源代码
    sqlmap -u http://"链接“ —data=”post请求抓取的源代码” —dbs,常用于post请求。

  2. cookie头
    —cookie:-u “url” —cookie=”…” —level 2(需要注意的是,当level默认为1的时候,默认不扫cookie的内容,必须是level大于等于2才能扫cookie里的内容)

  3. user-agent头
    —user-agent http:头会携带一个值,就是user-agent,表示访问的浏览器的信息,我们可以手动指定伪造一个
    —random-agent:随机产生user-agent头,也不是随机,是从/usr/share/sqlmap/txt/user-agents.txt,收集了大量的浏览器信息
    sqlmap -u “…” —cookie=”…” —level 3 —random-agent —dbs —user-agent=”aaaaa”
    lever>=3才会去检查user-agent头是否存在注入漏洞

  4. host头
    —host level=5,host存在注入的漏洞情况比较少,同时也不建议把级别设置成5
    —host=”aaaaaa”,每次HOST请求时都会变成一串a

  5. referer头
    —referer level>=3,才会对referer头进行检测
    —referer=”aaaa”

  6. 额外定义的heade头
    —HEADER 设置单一的http头
    —headers 每个头单独一行,可以使用\n来换行(名称区分大小写)
    —headers=”…\n…”

身份验证

  1. HTTP协议认证
    Basic 基本身份验证
    Digest 摘要式身份认证
    NTLM NTLM身份验证(windows)
    sqlmap -u “…” —auth-type Basic —auth-cred “user:pass” ,指明验证类型为Basic,并说明用户名和密码

  2. http(s)代理
    主动请求时会被记录,被发现屏蔽,这时我们需要个代理,就用到了—proxy参数了。
    —proxy=”http://127.0.0.1:8087
    —proxy-cred=”name:pass” 需做身份验证时
    —proxy-file 用于设置文件中的多条代理
    —ignore-proxy 忽略系统级代理,通常用于扫描本地网络目标(若在操作系统设置了代理,后续的一切工作都经过代理)

  3. 基于客户端证书(比较少见,在以前的网银中比较常见)
    当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file。
    key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。
    —auth-cert (name:password)
    —auth-file(HTTP authentication PEM cert/private key file)
    如:—auth-file=”ca.PEM”,含有私钥的PEM格式证书文件或PEM格式的证书链文件

  4. 设置忽略401
    —ignore-401参数用来忽略为验证错误
    如果想测试返回HTTP错误401(未经授权)的站点,在忽略它并不提供适当凭证的情况下继续测试

使用技巧

  1. HTTP请求延迟
    发送量过大的话,会引起waf等发现,
    —delay 每次http(s)请求之间延迟时间,浮点数,单位为妙,默认无延迟,输入此参数,你会发现每个请求都会延迟3秒,当然数据库还是可以爆出来的

  2. 设置请求超时时间
    若客户端一直未收到服务器返回的值,就一直等着,所以需要个请求超时时间
    —timeout 请求超时时间,浮点数,默认30秒

  3. 设定重试时间
    —retries http(s)连接超时重传次数,默认3次

  4. 设定随记改变的参数值
    —randomize 长度、类型与原始值保持一致的前提下,值当每次请求随记取值的参数名
    sqlmap -u “http://1.1.1.1/a.php?id=1“ —randomize=”id”

  5. 利用正则表达式过滤目标网址
    —scope 使用brup抓取的日志文件,但日志文件比较大,你只想检测日志中的一个站点或者某一个特征是否存在sql注入
    过滤日志内容,通过正则表达式筛选扫描对象
    sqlmap -l burp.lpg —scope=”(www)?.baidu.(com|net|org)”
    sqlmap -l burp.lpg —scope=”(19)?.168.20.(1|10|100)”

  6. 关掉URL参数值编码
    —skip-urlencode 默认get方法会对传输内容进行编码,某些web服务器不遵循RFC标准编码,使用原始字符提交数据

  7. 避免过多的错误请求被屏蔽
    有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。常见情况是在检测盲注阶段会产生大量失败请求,当产生大量错误请求后,服务器端可能因此销毁session
    —safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。
    —safe-post:POST数据发送到安全URL
    —safe-req:从文件加载安全的HTTP请求
    —safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。

性能优化

-o:打开所有优化开关

  1. 持久连接
    —keep-alive:使用http(s)长连接,性能好,与—proxy参数不兼容

  2. 检索没有body响应的内容
    —null-conection:只获取响应页面的大小值,而非页面具体内容能够
    通常用于盲注判断真/假,降低网络带宽消耗
    与—text-only参数不兼容(基于页面内容的比较判断真/假)

  3. 多线程
    —threads=THREADS:并发HTTP请求的最大数量(默认1)
    盲注时每个线程获取一个字符(7此请求),获取完成后线程结束
    默认为1,建议不要超过10,否则可能影响站点可用性
    与—predict-output参数不兼容

  4. 预测输出
    —predict-output
    根据检测方法,比对返回值和统计表内容,不断缩小检测范围,提高检测效率
    版本名、用户名、密码、Prervileges、role、数据库名称、表名、列名
    与—threads参数不兼容
    统计表路径:/usr/share/sqlmap/txt/common-outputs.txt

注入

  1. 指定测试的参数
    -p
    sqlmap默认测试所有的GET和POST参数,当—level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是也可以手动用-p参数设置想要测试的参数。例如: -p “id,user-anget”
    指定扫描的参数,也可指定变量名称,使—level失效

  2. 排除测试的参数
    —skip / —skip-static
    当你使用—level的值很大但是有个别参数不想测试的时候可以使用—skip参数。排错指定的扫描参数,不指定的默认会对全部扫描,然后根据level级别对http头扫描
    —skip-static可忽略非动态的参数
    如:—level=5 —skip=”id,uesr-agent”

  3. 忽略探测具体的参数
    —param-exclude
    例:—param-exclude=”token|session”,可忽略对包含token或session的参数进行探测

  4. 指定数据库
    —dbms 数据库管理系统名称[版本号]
    默认情况系sqlmap会自动的探测web应用后端的数据库是什么,但是如果已经知道的目标是什么数据库了,可以使用—dbms指定数据库节省时间了,提高工作效率了
    例:—dbms mysql 5.0
    —dbms-cres = username:password
    设置DBMS认证

  5. 指定数据库服务器系统
    —os
    默认情况下sqlmap会自动的探测数据库服务器系统,支持的系统有:Linux、Windows

  6. 强制设置无效值替换
    —invalid-bignum / —invalid-logical / —invalid-string
    默认情况下sqlmap使用负值使参数失效 id=1 -> id=-1
    bignum使用大数使参数值失效 id=999999

  7. 关闭负载转换机制
    —no-cast
    在检索结果是,sqlmap使用一种机制,在这种纸质中,所有的条目都被转换为字符串类型,并在NULL值的情况下用空格字符替换。这样做是为了防止出现任何错误状态(例如,将空格与字符串连接起来),并简化数据检索过程本身。尽管如此,还是有报告的案例(例如MySQL DBMS旧版本)由于数据检索本身的问题(没有返回值)需要关闭这种机制。

  8. 关闭字符转义机制
    —no-escape
    关闭使用char替换字符串功能
    出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃避的方法替换字符串
    select ‘foo’ ->select char(102)+char(111)+char(111)

  9. 自定义注入负载位置
    —prefix / —sufix
    在某些情况下,只有当用户提供要附加早注入负载的特定位置时,易受攻击的参数才可被利用。当用户一斤知道查询语法并希望通过直接提供注入有效负载的前缀和后缀来检测和利用SQL注入式使用
    例如:

    1
    2
    3
    $query = "SELECT * FROM users WHERE id = ('.$_GET['id'].') LIMIT 0,1";
    // python sqlmap.py -u "http://xxx.xxx.xxx/?id=1" -p id --prefix "')" --suffix "AND ('abc'='abc"
    $query = "SELECT * FROM users WHERE id = ('1') <PAYLOAD> AND ('abc'='abc') LIMIT 0,1";
  10. tamper脚本
    —tamper
    sqlmap本身不会回校发送的有效负载,出来单引号之间的字符串被CHAR()类似的表示形式所取代之外。
    sqlmap通过tamper脚本来绕过WAF等防御措施,可以在tamper文件夹下找到所有sqlmap自带的tamper脚本。
    例:—tamper “xxx.py,xx.py”

自定义检测参数

  1. 探测等级
    —level
    此选项需要制定要执行的测试等级参数,共有5个等级。在执行有限数量的测试时,默认值为1,1~5探测复杂度逐步提升。
    sqlmap使用的payload可以在/usr/share/sqlmap/xml/payloads中看到,也可以根据相应的格式添加自己的payload。
    这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。

  2. 风险等级
    —risk
    共有3个风险等级,默认是1会测试大部分的测试语句,2会增加基于时间的测试语句,3会增加OR语句的SQL注入测试。
    在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。
    测试的语句同样可以在xml/payloads.xml中找到,你也可以自行添加payload。

  3. 页面比较参数
    —string:指定包含字符串,查询为True
    —not-string:指定包含字符串,查询为False
    —regexp:指定通过正则表达式匹配字符串,查询为True
    —code:指定匹配HTTP状态响应码,查询为True
    默认情况下,通过比较注入的请求页面内容和未注入的原始页面内容,可以区分真查询和假查询。这种观念并不总是起作用,是因为在每次刷新页面内容的变化有时甚至没有注入。例如当页面有一个计数器,一个动态广告横幅或者其他HTML的一部分呈现动态和可能改变时间不仅因此用户的输入。为了绕过这个限制,sqlmap努力识别响应体的这些片段并进行相应处理。

  4. 内容比较参数
    —text-only:设置页面内容中包含文本
    —titles:设置页面title中包含文本
    前提需要知道如何区分查询的真与假,根据返回字符串内容不同。
    例:—text-only=”Welcome !!!”
    —titles=”Login”

注入技术

  1. 注入类型
    —technique
    检测存在sql注入的技术类型,默认会测试所有的方式。
    B:Boolean-based-blind(布尔型型注入)
    E:Error-based(报错型注入)
    U:Union query-based(联合注入)
    S:Starked queries(堆叠注入)
    T:Time-based blind(基于时间的盲注)
    Q:Inline queries(内联查询注入)

  2. 设定盲注的延迟时间
    —time-sec
    基于时间的注入检测响应延迟时间(默认5秒)

  3. 设定UNION查询字段数
    —union-cols
    默认联合查询1-10列,随-level增加最多支持50列
    例如:—union-cols 6-9,测试6-9个字段数

  4. 设定UNION查询使用的字符
    —union-char
    联合查询默认使用NULL,极端情况下NUL可能失败,此时可以手动指定数值
    例如:—union-char 123

  5. 设定UNION查询表
    —union-from
    在某些情况下,sqlmap需要设定union查询SQL注入的具体数据表才可以得到数据

  6. 设置DNS攻击
    —dns-domain “dns服务器”
    针对目标网络很有可能有外部流量进行限制,或者设置WAF
    通过设置DNS流量来突破限制,需要用户自身具有一个开放53端口的DNS服务器,通过DNS流量来获得web应用程序中的数据内容。

  7. 二次注入
    —second-url
    有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面,这时候就需要你指定到哪个页面获取响应判断真假。
    —second-url后面跟一个判断页面的URL地址。

  8. 识别指纹
    -f,—fingerprint
    -b,—banner
    数据库管理系统指纹信息
    大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。

枚举信息

-a, --all           获取所有信息
-b, --banner        获取数据库管理系统的标识
--current-user      获取数据库管理系统当前用户
--current-db        获取数据库管理系统当前数据库
--hostname          获取数据库服务器的主机名称
--is-dba            检测DBMS当前用户是否DBA
--users             枚举数据库管理系统用户
--passwords         枚举数据库管理系统用户密码哈希
--privileges        枚举数据库管理系统用户的权限
--roles             枚举数据库管理系统用户的角色
--dbs               枚举数据库管理系统数据库
--tables            枚举的DBMS数据库中的表
--columns           枚举DBMS数据库表列
--schema            枚举数据库架构
--count             检索表的项目数
--dump              转储数据库表项
--dump-all          转储数据库所有表项
--search            搜索列(S),表(S)和/或数据库名称(S)
--comments          获取DBMS注释
--statements        检索在DBMS上运行的SQL语句
-D DB               要进行枚举的指定数据库名
-T TBL              枚举DBMS数据库表
-C COL              枚举DBMS数据库表列
-X EXCLUDECOL       不枚举的DBMS数据库标识符
-U USER             枚举DBMS用户
--exclude-sysdbs    枚举表时排除系统数据库
--pivot-column=P..  Pivot columnname
--where=DUMPWHERE   Use WHEREcondition while table dumping
--start=LIMITSTART  获取第一个查询输出数据位置
--stop=LIMITSTOP    获取最后查询的输出数据
--first=FIRSTCHAR   第一个查询输出字的字符获取
--last=LASTCHAR     最后查询的输出字字符获取
--sql-query=QUERY   要执行的SQL语句
--sql-shell         提示交互式SQL的shell
--sql-file=SQLFILE  要执行的SQL文件

暴力破解

对于用sql注入无法爆出的数据库内容,可以使用暴力破解尝试着爆出数据库的内容。
1.暴力破解表名
—common-tables
mysql<5.0,没有information schema库
mysql<=5.0,但无权限读取information schema库
微软的access数据集,默认无权读取mysysobjects库

2.暴力破解列名
—common-columns
(access系统表无列信息)
暴力破解的表在txt/common-tables.txt文件中,列名在txt/common-columns.txt中。可以自行添加。

3.暴力破解文件
—common-files

文件系统访问

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。读取的文件可以是文本也可以是二进制文件。

读取系统文件
—file-read
—file-read=”文件绝对路径”

把文件上传到数据库服务器中
—file-write
—file-write=”123.txt” —file-dest “文件绝对路径”

--file-read=RFILE   从后端的数据库管理系统文件系统读取文件
--file-write=WFILE  编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE   后端的数据库管理系统写入文件的绝对路径

操作系统访问

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。
在MySQL、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。
那么他创建的这两个函数可以执行系统命令。在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认止),sqlmap会重新启用它,如果不存在,会自动创建。
—os-shell
—os-cmd
用—os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。
当不能执行多语句的时候(比如php或者asp的后端数据库为MySQL时),仍然可能使用INTO OUTFILE写进可写目录,来创建一个web后门。支持的语言:
1、ASP 2、ASP.NET 3、JSP 4、PHP

--os-cmd=OSCMD      执行操作系统命令(OSCMD)
--os-shell          交互式的操作系统的shell
--os-pwn            获取一个OOB shell,meterpreter或VNC
--os-smbrelay       一键获取一个OOBshell,meterpreter或VNC
--os-bof            存储过程缓冲区溢出利用
--priv-esc          数据库进程用户权限提升
--msf-path=MSFPATH  MetasploitFramework本地的安装路径
--tmp-path=TMPPATH  远程临时文件目录的绝对路径

Windows注册表访问

--reg-read          读一个Windows注册表项值
--reg-add           写一个Windows注册表项值数据
--reg-del           删除Windows注册表键值
--reg-key=REGKEY    Windows注册表键
--reg-value=REGVAL  Windows注册表项值
--reg-data=REGDATA  Windows注册表键值数据
--reg-type=REGTYPE  Windows注册表项值类型

常规参数&其它

  1. -s sqlmap会话文件保
    sqlmap对每一个目标都会在output路径下自动生成一个SQLite文件,如果用户想指定读取的文件路径,就可以用这个参数。

  2. -t 记录流量文件保存位置
    这个参数需要跟一个文本文件,sqlmap会把HTTP(S)请求与响应的日志保存到那里。

  3. —batch
    用此参数,不需要用户输入,将会使用sqlmap提示的默认值一直运行下去。

  4. 强制使用字符编码
    —charset 强制字符编码
    —charset=GBK / —charset=”0123456789abcde…”
    不使用sqlmap自动识别的(如HTTP头中的Content-Type)字符编码,强制指定

  5. 爬行网站URL
    sqlmap可以收集潜在的可能存在漏洞的连接,后面跟的参数是爬行的深度。
    —crawl 从起始位置爬站深度
    —batch—crawl=3

  6. 刷新session文件
    —flush-session 清空session
    如果不想用之前缓存这个目标的session文件,可以使用这个参数。 会清空之前的session,重新测试该目标。

  7. 自动获取form表单测试
    —forms
    如果你想对一个页面的form表单中的参数测试,可以使用-r参数读取请求文件,或者通过—data参数测试。 但是当使用—forms参数时,sqlmap会自动从-u中的url获取页面中的表单进行测试。

  8. 忽略在会话文件中存储的查询结果
    -fresh-quesries 忽略session查询结果

  9. 使用DBMS的hex函数
    —hex dump非ASCII字符内容时,将其编码为16进制形式,收到后解码还原

  10. 分析和现实数据库内建报错信息
    —parse-errors 将会分析和现实数据库内建报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-s SESSIONFILE      保存和恢复检索会话文件的所有数据
-t TRAFFICFILE 记录所有HTTP流量到一个文本文件中
-z MNEMONICS 使用短记忆法 (e.g."flu,bat,ban,tec=EU")
--alert=ALERT 发现SQL注入时,运行主机操作系统命令
--answers=ANSWERS 设置预定义的答案(e.g. "quit=N,follow=N")
--base64=BASE64P.. 包含Base64编码数据的参数
--batch 从不询问用户输入,使用所有默认配置。
--beep 发现sql注入时,发出蜂鸣声。
--binary-fields=.. 结果字段具有二进制值(e.g."digest")
--charset=CHARSET 强制字符编码
--check-internet Check Internet connection before assessing the target
--cleanup 清除sqlmap注入时在DBMS中产生的udf与表。
--crawl=CRAWLDEPTH 从目标URL爬行网站
--crawl-exclude=.. 正则表达式从爬行页中排除
--csv-del=CSVDEL 限定使用CSV输出 (default",")
--dependencies Check formissing (non-core) sqlmap dependencies
--disable-coloring 默认彩色输出,禁掉彩色输出。
--dump-format=DU.. 转储数据格式(CSV(default), HTML or SQLITE)
--eta 显示每个输出的预计到达时间
--flush-session 刷新当前目标的会话文件
--forms 解析和测试目标URL表单
--fresh-queries 忽略在会话文件中存储的查询结果
--gpage=GOOGLEPAGE 使用前100个URL地址作为注入测试,结合此选项,可以指定页面的URL测试
--hex 使用DBMS Hex函数数据检索
--identify-waf 进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别
--mobile 有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登陆。
--offline Work inoffline mode (only use session data)
--output-dir=OUT.. 自定义输出目录路径
--parse-errors 解析和显示响应数据库错误信息
--purge-output 从输出目录安全删除所有内容,有时需要删除结果文件,而不被恢复,可以使用此参数,原有文件将会被随机的一些文件覆盖。
--save=SAVECONFIG 保存选项到INI配置文件
--scope=SCOPE 从提供的代理日志中使用正则表达式过滤目标
--skip-waf 跳过WAF/IPS / IDS启发式检测保护
--smart 进行积极的启发式测试,快速判断为注入的报错点进行注入
--sqlmap-shell 互动提示一个sqlmapshell
--test-filter=TE.. 选择测试的有效载荷和/或标题(e.g. ROW)
--test-skip=TEST.. 跳过试验载荷和/或标题(e.g.BENCHMARK)
--tmp-dir=TMPDIR 用于存储临时文件的本地目录
--update 更新sqlmap
--web-root=WEBROOT Web服务器的文档根目录(e.g."/var/www")
--wizard 新手用户简单的向导使用,可以一步一步教你如何输入针对目标注入

tamper中部分脚本

名称 功能
apostrophemask.py 用utf8代替引号
apostrophenullencode.py 绕过过滤双引号,替换字符和双引号。
appendnullbyte.py 在有效负荷结束位置加载零字节字符编码
base64encode.py 用base64编码替换
between.py 用between替换大于号(>)
bluecoat.py 代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为like
chardoubleencode.py 双url编码(不处理以编码的)
charencode.py url编码
charunicodeencode.py 字符串 unicode 编码
equaltolike.py like代替等号
greatest.py 绕过过滤’>’ ,用GREATEST替换大于号。
halfversionedmorekeywords.py 关键字前加注释
halfversionedmorekeywords.py 当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
ifnull2ifisnull.py 绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’
modsecurityversioned.py 过滤空格,包含完整的查询版本注释
multiplespaces.py 围绕SQL关键字添加多个空格
randomcase.py 随机大小写
randomcomments.py 用/**/分割sql关键字
sp_password.py 追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
space2comment.py 用/**/代替空格
space2dash.py 绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行(’n’)
space2hash.py 空格替换为#号,随机字符串以及换行符
space2morehash.py 空格替换为 #号 以及更多随机字符串 换行符
space2mssqlblank.py (mssql)空格替换为其它空符号
space2mssqlhash.py 替换空格
space2mysqlblank.py 空格替换其它空白符号(mysql)
space2mysqldash.py 替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
space2plus.py 用+替换空格
space2randomblank.py 代替空格字符(“”)从一个随机的空白字符可选字符的有效集
space2comment.py 替换空格字符串(‘‘) 使用注释‘/**/’
unionalltounion.py 替换UNION ALLSELECT UNION SELECT
unmagicquotes.py 宽字符绕过 GPCaddslashes
versionedmorekeywords.py 注释绕过