官网:http://sqlmap.org
sqlmap源码:https://github.com/sqlmapproject/sqlmap
什么是sqlmap
SqlMap的是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
当给sqlmap这么一个url的时候,它会:
1、判断可注入的参数
2、判断可以用那种SQL注入技术来注入
3、识别出哪种数据库
4、根据用户选择,读取哪些数据
通用功能
- 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB和HSQLDB数据库管理系统。
- 完全支持五种SQL注入技术:基于布尔的盲,基于时间的盲,基于错误,UNION查询和堆叠查询。
- 通过提供DBMS凭据,IP地址,端口和数据库名称,支持直接连接到数据库而无需通过SQL注入。
- 它可以提供一个单一的目标URL,从中获取目标列表中打嗝代理或WebScarab代理请求日志文件,得到一个文本文件中的整个HTTP请求或提供的SqlMap与谷歌白痴哪些查询得到的目标列表谷歌搜索引擎并解析其结果页面。您还可以定义基于正则表达式的范围,该范围用于标识要测试的解析地址。
- 测试提供了GET参数,POST参数,HTTP Cookie标头值,HTTP User-Agent标头值和HTTP Referer标头值,以识别和利用SQL注入漏洞。还可以指定要测试的特定参数的逗号分隔列表。
- 用于指定最大并发HTTP(S)请求数(多线程)以加速盲SQL注入技术的选项。反之亦然,还可以指定每个HTTP(S)请求之间保持的秒数。其他优化开关也加速了开发。
- HTTP
Cookie
标头字符串支持,当Web应用程序需要基于cookie的身份验证并且您拥有此类数据时,或者您只想测试并利用此类标头值上的SQL注入时非常有用。您还可以指定始终对Cookie进行URL编码。 - 自动处理应用程序的HTTP
Set-Cookie
标头,如果会话过期则重新建立会话。还支持对这些值进行测试和利用。反之亦然,您也可以强制忽略任何Set-Cookie
标题。 - HTTP协议Basic,Digest,NTLM和证书身份验证支持。
- HTTP(S)代理支持将请求传递给目标应用程序,该目标应用程序也可以使用HTTPS请求和经过身份验证的代理服务器。
- 用于伪造HTTP
Referer
标头值和用户指定的HTTPUser-Agent
标头值或从文本文件中随机选择的伪标题的选项。 - 支持增加输出消息的详细程度:存在七个级别的冗长。
- 支持从目标URL 解析HTML表单,并针对这些页面伪造HTTP(S)请求,以针对漏洞测试表单参数。
- 用户交换机和功能方面的粒度和灵活性。
- 实时更新的每个查询的估计到达时间支持,以向用户提供有关检索查询输出所需时间的概述。
- 在获取数据时自动将会话(查询及其输出,即使部分检索)实时保存在文本文件上,并通过解析会话文件来恢复注入。
- 支持从配置INI文件中读取选项,而不是每次在命令行上指定所有开关。还支持基于提供的命令行开关生成配置文件。
- 支持在本地SQLite 3数据库上复制后端数据库表结构和条目。
- 可选择将sqlmap从subversion存储库更新到最新的开发版本。
- 支持解析HTTP(S)响应并向用户显示任何DBMS错误消息。
- 与其他IT安全开源项目,Metasploit和w3af集成。
简单使用
1)安装
方法1:先安装python2.7(3.X暂不支持),然后执行如下
方法2:者通过url下载,并解压到本地目录
2)注入单个URL
-u #注入点
-f #指纹判别数据库类型
-b #获取数据库版本信息
-p #指定可测试的参数(?page=1&id=2 -p “page,id”)
-D “” #指定数据库名
-T “” #指定表名
-C “” #指定字段
-s “” #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log” 恢复:-s “xx.log” –resume)
选项: -v
此选项可用于设置输出消息的详细级别。存在七个级别的冗长。默认级别为1,其中显示信息,警告,错误,关键消息和Python回溯(如果发生)。
- 0:仅显示Python回溯,错误和关键消息。
- 1:还显示信息和警告消息。
- 2:显示调试消息。
- 3:显示注入的有效负载。
- 4:还显示HTTP请求。
- 5:还显示HTTP响应的标题。
- 6:还显示HTTP响应的页面内容。
一个合理的冗长程度,以进一步了解sqlmap在底层的作用是2级,主要用于检测阶段和接管功能。而如果您想查看工具发送的SQL有效负载,则第3级是您的最佳选择。当您向开发人员提供潜在的错误报告时,也建议使用此级别,确保随标准输出一起发送带有选项生成的流量日志文件-t
。为了进一步调试潜在的错误或意外行为,我们建议您将详细程度设置为4级或更高级别。应该注意的是,还可以通过使用此选项的较短版本来设置详细程度,其中字母数量v
内的规定开关(而不是选择)确定的详细级别(例如-v
,而不是-v 2
,-vv
代替-v 3
,-vvv
而不是-v 4
等)