用法-一般(General)-sqlmap用户手册-测试-IT技术博客

一般(General)

这些选项可用于设置一些常规工作参数。


从存储的(.sqlite)文件加载会话

选项:-s


sqlmap会在专用输出目录内为每个目标自动创建一个持久会话SQLite文件,该文件中存储了会话恢复所需的所有数据。如果用户想显式设置会话文件位置(例如,用于在一个地方存储多个目标的会话数据),则可以使用此选项。


将HTTP流量记录到文本文件

选项:-t


此选项需要一个参数,该参数指定文本文件以写入由sqlmap生成的所有HTTP通信-HTTP(S)请求和HTTP(S)响应。


这主要用于调试目的-当您向开发人员提供潜在的错误报告时,也请发送此文件。


以非交互模式运行

开关:--batch


如果希望sqlmap作为批处理工具运行,并且在sqlmap需要它时没有任何用户交互,则可以使用switch --batch强制执行。每当需要用户输入时,这都会使sqlmap保持默认行为。


二进制内容检索

选项--binary-fields


在二进制内容检索的情况下,例如在具有存储二进制值列的表的示例中(例如,具有二进制存储密码哈希值的列密码),可以使用--binary-fields选项(额外)进行适当处理通过sqlmap。然后检索所有这些字段(即表格列)并以其十六进制表示形式表示,因此之后可以使用其他工具(例如john)进行适当处理。


自定义(盲)SQL注入字符集

选项:--charset


在基于布尔的盲和基于时间的盲SQL注入情况下,用户可以强制使用自定义字符集来加快数据检索过程。例如,在转储消息摘要值(例如SHA1)的情况下,使用--charset =“ 0123456789abcdef”可以使请求的请求数比正常运行少30%左右。


从目标网址开始抓取网站

选项:--crawl


sqlmap可以通过从目标位置开始收集(爬网)潜在的脆弱链接。使用此选项,用户可以设置深度(距起始位置的距离),在此深度以下,sqlmap不会进入收集阶段,因为只要有新的链接要访问,该过程就会以递归方式进行。


针对MySQL目标运行的示例:

$ python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/" --batch --crawl=3
[...]
[xx:xx:53] [INFO] starting crawler
[xx:xx:53] [INFO] searching for links with depth 1
[xx:xx:53] [WARNING] running in a single-thread mode. This could take a while
[xx:xx:53] [INFO] searching for links with depth 2
[xx:xx:54] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:00] [INFO] 42/56 links visited (75%)
[...]

选项--crawl-exclude


使用此选项,您可以通过提供正则表达式来排除爬网的页面。例如,如果要跳过路径中所有具有关键字注销的页面,则可以使用--crawl-exclude = logout。


CSV输出中使用的定界字符

选项:--csv-del


当将转储的数据存储为CSV格式(--dump-format = CSV)时,必须使用“分隔值”(默认值为,)分隔条目。如果用户要覆盖其默认值,则可以使用此选项(例如--csv-del =“;”)。


DBMS身份验证凭据

选项:--dbms-cred


在某些情况下,将警告用户某些操作由于缺少当前的DBMS用户权限而失败,并且他可以尝试使用此选项。在这些情况下,如果他使用此选项向sqlmap提供管理员用户凭据,则sqlmap将尝试使用这些凭据通过专门的“运行方式”机制(例如Microsoft SQL Server上的OPENROWSET)重新运行有问题的部分。


转储数据的格式

选项:--dump-format


将转储的表数据存储到输出目录中的相应文件中时,sqlmap支持三种不同类型的格式设置:CSV,HTML和SQLITE。默认值是CSV,默认格式是CSV,其中每行表格都逐行存储到文本文件中,并且每个条目都以逗号分隔(或选项--csv-del提供)。如果是HTML,输出将存储到HTML文件中,其中每一行均以格式化表格内的一行表示。如果是SQLITE,则将输出存储到SQLITE数据库中,在该数据库中原始表内容被复制到具有相同名称的对应表中。


用于数据检索的强制字符编码

选项:--encoding


为了正确解码字符数据,sqlmap使用Web服务器提供的信息(例如HTTP标头Content-Type)或来自第三方库chardet的启发式结果。


但是,在某些情况下,必须重写此值,尤其是在检索包含国际非ASCII字母(例如--encoding = GBK)的数据时。必须注意的是,由于存储的数据库内容与目标端使用的数据库连接器之间的隐式不兼容,字符信息可能会不可逆转地丢失。


预计到达时间

开关:--eta


可以实时计算并显示估计的到达时间,以检索每个查询输出。当用于检索输出的技术是任何盲SQL注入类型时,将显示此信息。


针对仅受基于布尔的盲SQL注入影响的Oracle目标的示例:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id\
=1" -b --eta
[...]
[hh:mm:01] [INFO] the back-end DBMS is Oracle
[hh:mm:01] [INFO] fetching banner
[hh:mm:01] [INFO] retrieving the length of query output
[hh:mm:01] [INFO] retrieved: 64
17% [========>                                          ] 11/64  ETA 00:19

然后:

100% [===================================================] 64/64
[hh:mm:53] [INFO] retrieved: Oracle Database 10g Enterprise Edition Release 10.2
.0.1.0 - Prod
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner:    'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'

如您所见,sqlmap首先计算查询输出的长度,然后估计到达时间,以百分比显示进度并计算检索到的输出字符数。


刷新会话文件

选项:--flush-session


正如您已经从上面的描述熟悉会话文件的概念一样,很高兴知道您可以使用选项--flush-session刷新该文件的内容。这样,您可以避免在sqlmap中默认实现的缓存机制。其他可能的方法是手动删除会话文件。


解析和测试表单的输入字段

开关:--forms


假设您要针对大型注入形式的SQL注入进行测试,或者要测试登录绕过(通常只有两个输入字段,如用户名和密码),则可以将请求中的请求传递给sqlmap(-r) ,相应地设置POSTed数据(--data)或让sqlmap为您完成!


上述两个实例以及许多其他实例在HTML响应正文中均显示为<form>和<input>标记,这就是此开关起作用的地方。


提供带有--forms的sqlmap以及可以在其中找到该表单的页面作为目标URL(-u),并且sqlmap将为您请求目标URL,解析其拥有的表单并指导您进行SQL注入测试这些表单输入字段(参数),而不是提供的目标URL。


忽略存储在会话文件中的查询结果

开关:--fresh-queries


正如您已经从上面的描述熟悉会话文件的概念一样,很高兴知道您可以使用--fresh-queries选项忽略该文件的内容。这样,您可以使会话文件保持不变,并且对于选定的运行,避免恢复/还原查询输出。


使用DBMS十六进制函数进行数据检索

开关:--hex


在丢失情况下,非ASCII数据的检索需要特殊的需求。解决该问题的一种方法是使用DBMS十六进制函数。通过此开关打开,数据将在检索之前编码为十六进制格式,然后再未编码为原始格式。


针对PostgreSQL目标的示例:

$ python sqlmap.py -u "http://192.168.48.130/sqlmap/pgsql/get_int.php?id=1" --b\
anner --hex -v 3 --parse-errors
[...]
[xx:xx:14] [INFO] fetching banner
[xx:xx:14] [PAYLOAD] 1 AND 5849=CAST((CHR(58)||CHR(118)||CHR(116)||CHR(106)||CHR
(58))||(ENCODE(CONVERT_TO((COALESCE(CAST(VERSION() AS CHARACTER(10000)),(CHR(32)
))),(CHR(85)||CHR(84)||CHR(70)||CHR(56))),(CHR(72)||CHR(69)||CHR(88))))::text||(
CHR(58)||CHR(110)||CHR(120)||CHR(98)||CHR(58)) AS NUMERIC)
[xx:xx:15] [INFO] parsed error message: 'pg_query() [<a href='function.pg-query'
>function.pg-query</a>]: Query failed: ERROR:  invalid input syntax for type num
eric: ":vtj:506f737467726553514c20382e332e39206f6e20693438362d70632d6c696e75782d
676e752c20636f6d70696c656420627920474343206763632d342e332e7265616c20284465626961
6e2032e332e322d312e312920342e332e32:nxb:" in <b>/var/www/sqlmap/libs/pgsql.inc.p
hp</b> on line <b>35</b>'
[xx:xx:15] [INFO] retrieved: PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by 
GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2
[...]

自定义输出目录路径

选项:--output-dir


缺省情况下,sqlmap将会话和结果文件存储在子目录输出中。 如果要使用其他位置,可以使用此选项(例如--output-dir = / tmp)。


从响应页面解析DBMS错误消息

开关:--parse-errors


如果将Web应用程序配置为调试模式,以便在HTTP响应中显示后端数据库管理系统错误消息,则sqlmap可以为您解析并显示它们。


这对于调试目的很有用,例如了解为什么某些枚举或接管开关不起作用-这可能与会话用户的权限有关,在这种情况下,您将看到拒绝用户<SESSION USER的访问行中的DBMS错误消息 >。


针对Microsoft SQL Server目标的示例:

$ python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1"\
 --parse-errors
[...]
[xx:xx:17] [INFO] ORDER BY technique seems to be usable. This should reduce the 
timeneeded to find the right number of query columns. Automatically extending th
e rangefor current UNION query injection technique test
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Driv
ers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 10 i
s out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Driv
ers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 6 is
 out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Driv
ers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 4 is
 out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] target URL appears to have 3 columns in query
[...]

预处理响应数据

选项 --preprocess


使用此选项,可以在sqlmap检测引擎使用(HTTP)响应数据之前使用预处理脚本(例如,解码数据或删除垃圾)。 例如,将所有小写字母转换为大写字母的预处理脚本可以是:

#!/usr/bin/env python
def preprocess(page, headers=None, code=None):
    return page.upper() if page else page, headers, code


将选项保存在配置INI文件中

选项:--save


可以将命令行选项保存到配置INI文件中。 然后可以编辑生成的文件,并使用-c选项将其传递到sqlmap,如上所述。


更新sqlmap

开关:--update


使用此选项,您可以直接从Git存储库将工具更新到最新的开发版本。 您显然需要Internet访问。


如果由于某种原因该操作失败,请从sqlmap工作副本中运行git pull。 它将执行与--update完全相同的操作。 如果在Windows上运行sqlmap,则可以使用SmartGit客户端。


在向邮件列表报告任何错误之前,强烈建议您这样做。


标签: sqlmap教程sqlmapsqlmap手册用户手册sqlmap用户手册