找回密码
 立即注册

sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器。它配备了强大的检测引擎,针对终极渗透测试人员的众多特性,以及从数据库指纹识别,从数据库获取数据,到访问底层文件系统以及在操作系统上通过out-带外连接。


特征:

  • 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix数据库管理系统。
  • 完全支持六种SQL注入技术:基于布尔的盲,基于时间的盲,基于错误的,基于查询的UNION,堆栈查询和带外。
  • 支持直接连接数据库而不通过SQL注入,通过提供DBMS凭证,IP地址,端口和数据库名称。
  • 支持枚举用户,密码哈希,权限,角色,数据库,表和列。
  • 自动识别密码哈希格式,并支持使用基于字典的攻击对其进行破解。
  • 支持完全转储数据库表,一系列条目或特定列根据用户的选择。用户也可以选择仅从每列的条目转储一系列字符。
  • 支持搜索特定的数据库名称,跨所有数据库的特定表或所有数据库表的特定列。例如,这对于标识包含自定义应用程序凭证的表格非常有用,其中相关列的名称包含名称和传递等字符串。
  • 当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持从数据库服务器底层文件系统下载和上载任何文件。
  • 当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持执行任意命令并检索数据库服务器底层操作系统上的标准输出。
  • 支持在攻击者机器和数据库服务器底层操作系统之间建立一个带外状态TCP连接。该通道可以是交互式命令提示符,Meterpreter会话或图形用户界面(VNC)会话,可以根据用户的选择进行选择。
  • 通过Metasploit的Meterpreter 命令支持数据库进程'用户权限升级getsystem。


screenshot-500x273.png
用法:

python sqlmap [options]

python sqlmap [选项]


选项:

-h,--help  显示基本帮助信息并退出

-hh  显示高级帮助信息并退出

--version 显示程序的版本号并退出

-v VERBOSE  详细程度级别:0-6(默认值1)


目标:至少必须提供其中一个选项来定义目标(S)

-d DIRECT  直接连接数据库的连接字符串

-u URL,--url = URL  目标URL(例如“http://www.site.com/vuln.php?id=1”)

-l LOGFILE  从Burp或WebScarab代理日志文件解析目标

-x SITEMAPURL  从远程站点地图(.xml)文件解析目标

-m BULKFILE  扫描文本文件中给出的多个目标

-r REQUESTFILE  从文件加载HTTP请求

-g GOOGLEDORK  将Google dork结果作为目标网址处理

-c CONFIGFILE  从配置INI文件中加载选项


请求:这些选项可用于指定如何连接到目标URL

--method = METHOD  强制使用给定的HTTP方法(例如PUT)

--data = DATA  通过POST发送的数据字符串

--param-del = PARA。 用于分割参数值的字符

--cookie = COOKIE   HTTP Cookie标头值

--cookie-del = COO ..  用于分割cookie值的字符

--load-cookies = L ..  包含Netscape / wget格式的cookie的文件

--drop-set-cookie  忽略来自响应的Set-Cookie头

--user-agent = AGENT   HTTP用户代理标题值

--random-agent  使用随机选择的HTTP User-Agent头值

--host = HOST   HTTP主机头值

--referer = REFERER   HTTP Referer头部值

-H HEADER,--hea ..   额外的头文件(例如“X-Forwarded-For:127.0.0.1”)

--headers = HEADERS   额外的标题(例如“Accept-Language:fr \ nETag:123”)

--auth-type = AUTH ..    HTTP认证类型(Basic,Digest,NTLM或PKI)

--auth-cred = AUTH ..    HTTP认证凭证(名称:密码)

--auth-file = AUTH ..    HTTP认证PEM证书/私钥文件

--ignore-code = IG ..   忽略HTTP错误代码(例如401)

--ignore-proxy    忽略系统默认代理设置

--ignore-redirects    忽略重定向尝试

--ignore-timeouts    忽略连接超时

--proxy = PROXY    使用代理连接到目标URL

--proxy-cred = PRO ..     代理认证凭证(名称:密码)

--proxy-file = PRO ..     从文件加载代理列表

--tor    使用Tor匿名网络

--tor-port = TORPORT    设置默认的Tor代理端口

--tor-type = TORTYPE     设置Tor代理类型(HTTP,SOCKS4或SOCKS5(默认))

--check-tor     检查Tor是否正确使用

--delay = DELAY     每个HTTP请求之间的延迟(秒)

--timeout = TIMEOUT    超时连接等待的时间(默认为30)

--retries = RETRIES      连接超时时重试(默认3)

--randomize = RPARAM     随机更改给定参数的值(s)

--safe-url =SAFEURL URL   在测试期间经常访问的SAFEURL URL地址

--safe-post = SAFE ..   POST数据发送到一个安全的URL

--safe-req = SAFER ..    从文件中加载安全的HTTP请求

--safe-freq = SAFE ..   两次访问给定安全URL的测试请求

--skip-urlencode    跳过净荷数据的URL编码

--csrf-token = CSR ..    用于保存反CSRF标记的参数

--csrf-url = CSRFURL     要访问的URL地址以提取反CSRF标记

--force-ssl     强制使用SSL / HTTPS

--hpp     使用HTTP参数污染方法

--eval = EVALCODE    在请求之前评估提供的Python代码(例如,“import hashlib; id2 = hashlib.md5(id).hexdigest()”)


优化:这些选项可以用来优化sqlmap的性能

-o  打开所有优化开关

--predict-output   预测常见查询输出

--keep-alive    使用持久HTTP(s)连接

--null-connection    检索没有实际的HTTP响应主体的页面长度

--threads = THREADS    最大并发HTTP请求数(默认值为1)


注射:这些选项可以用来指定要测试的参数,提供自定义注入有效载荷和可选的篡改脚本

-p TESTPARAMETER  可测试的参数(s)

--skip = SKIP   跳过对给定参数的测试

--skip-static    跳过似乎不是动态的测试参数

--param-exclude = ..    正则表达式从测试中排除参数(例如“ses”)

--dbms = DBMS   将后端DBMS强制为此值

--dbms-cred = DBMS ..     DBMS身份验证凭据(用户:密码)

--os = OS    强制后端DBMS操作系统为此值

--invalid-bignum    使用大数字来使值失效

--invalid-logical     使用逻辑操作来使值失效

--invalid-string      使用随机字符串来使值无效

--no-cast    关闭有效载荷转换机制

--no-escape     关闭字符串转义机制

--prefix = PREFIX    注入有效载荷前缀字符串

--suffix = SUFFIX    注入有效负载后缀字符串

--tamper = TAMPER    使用给定的脚本来篡改注入数据


检测:这些选项可用于自定义检测阶段

--level = LEVEL   要执行的测试级别(1-5,默认值1)

--risk=RISK  执行测试的风险(1-3,默认值1)

--string = STRING    将查询评估为True时匹配的字符串

--not-string = NOT ..   将查询评估为False时匹配的字符串

--regexp = REGEXP    正则表达式匹配查询评估为True时

--code = CODE   当查询评估为True时匹配的HTTP代码

--text-only   比较仅基于文本内容的页面

--titles   只比较页面的标题


技巧:这些选项可以用来调整特定SQL注入的测试技术

--technique = TECH     使用SQL注入技术(默认“BEUSTQ”)

--time-sec = TIMESEC    延迟DBMS响应的秒数(默认值5)

--union-cols = UCOLS     要测试UNION查询SQL注入的列的范围

--union-char =UCHAR  用于强化列数的UCHAR字符

--union-from = UFROM     表在UNION查询SQL注入的FROM部分中使用

--dns-domain = DNS ..      用于DNS泄露攻击的域名

--second-order = S ..      生成的页面URL搜索二阶响应


指纹:

-f,--fingerprint   执行大量的DBMS版本指纹


枚举: 这些选项可以用来枚举后端数据库管理体系信息,结构和所包含的数据表。而且你可以运行你自己的SQL语句

-a,--all   检索一切

-b,--banner  检索DBMS横幅

--current-user    检索DBMS当前用户

--current-db    检索DBMS当前数据库

--hostname   检索DBMS服务器主机名

--is-dba    检测DBMS当前用户是否是DBA

--users   枚举DBMS用户

--passwords   枚举DBMS用户密码哈希值

--privileges    枚举DBMS用户权限

--roles   枚举DBMS用户角色

--dbs   枚举DBMS数据库

--tables   枚举DBMS数据库表

--columns   枚举DBMS数据库表列

--schema   枚举DBMS模式

--count   检索表格的条目数

--dump  转储DBMS数据库表条目

--dump-all  转储所有DBMS数据库表项

--search   搜索列,表格和/或数据库名称(S)

--comments  检索DBMS注释

-D DB    DBMS数据库来枚举

-T TBL    DBMS数据库表进行枚举

-C COL   DBMS数据库表列来枚举

-X EXCLUDECOL    DBMS数据库表列不能枚举

-U USER     DBMS用户枚举

--exclude-sysdbs    枚举表时排除DBMS系统数据库

--pivot-column = P ..     Pivot列名称

--where = DUMPWHERE    在表转储时使用WHERE条件

--start = LIMITSTART     要检索的第一个转储表项

--stop = LIMITSTOP     要检索的上次转储表条目

--first = FIRSTCHAR     首先查询输出字符来检索

--last=LASTCHAR    最后一个查询输出字符字符检索

--sql-query =QUERY    要执行的QUERY SQL语句

--sql-shell     提示交互式SQL shell

--sql-file = SQLFILE     执行给定文件的SQL语句


蛮力:这些选项可以用来运行强力检查

--common-tables   检查是否存在通用表

--common-columns   检查是否存在公共列


用户定义的功能注入:这些选项可以用来创建自定义的用户定义函数

--udf-inject   注入自定义用户定义的函数

--shared-lib = SHLIB   共享库的本地路径


文件系统访问:这些选项可用于访问后端数据库管理系统底层文件系统

--file-read = RFILE    从后端DBMS文件系统读取文件

--file-write = WFILE   在后端DBMS文件系统上写入本地文件

--file-dest = DFILE     要写入的后端DBMS绝对文件路径


操作系统访问:这些选项可用于访问后端数据库管理系统底层操作系统

--os-cmd = OSCMD   执行操作系统命令

--os-shell    提示使用交互式操作系统shell

--os-pwn    提示使用OOB shell,Meterpreter或VNC

--os-smbrelay    单击OOB shell,Meterpreter或VNC的提示

--os-bof    存储过程缓冲区溢出开发

--priv-esc   数据库进程用户权限升级

--msf-path = MSFPATH     安装Metasploit Framework的本地路径

--tmp-path = TMPPATH    临时文件目录的远程绝对路径


Windows注册表访问:这些选项可用于访问后端数据库管理系统的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注册表项值类型


一般:这些选项可以用来设置一些一般的工作参数

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

-t TRAFFICFILE   将所有HTTP流量记录到文本文件中

-t TRAFFICFILE  不要求用户输入,使用默认行为

--binary-fields = ..     具有二进制值的结果字段(例如“摘要”)

--charset = CHARSET     强制用于数据检索的字符编码

--check-internet     在评估目标之前检查Internet连接

--crawl=CRAWLDEPTH     从目标URL开始抓取网站

--crawl-exclude = ..      正则表达式排除页面爬行(例如“注销”)

--csv-del = CSVDEL     CSV输出中使用的分隔字符(默认为“,”)

--dump-format = DU ..      转储数据的格式(CSV(默认),HTML或SQLITE)

--eta      显示每个输出的预计到达时间

--flush-session   刷新当前目标的会话文件

--forms   在目标URL上解析和测试表单

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

--har = HARFILE     将所有HTTP流量记录到HAR文件中

--hex     使用DBMS十六进制功能进行数据检索

--output-dir = OUT ..     自定义输出目录路径

--parse-errors      解析并显示来自响应的DBMS错误消息

--save = SAVECONFIG     将选项保存到配置INI文件

--scope = SCOPE Regexp    从提供的代理日志中筛选目标

--test-filter = TE ..     按有效载荷和/或标题选择测试(例如,ROW)

--test-skip = TEST ..    通过有效载荷和/或标题跳过测试(例如,BENCHMARK)

--update     更新sqlmap


  其它:

-z    助记符使用短助记符(例如“流感,蝙蝠,禁令,技术=欧盟”)

--alert = ALERT    发现SQL注入时运行主机操作系统命令

--answers = ANSWERS    设置问题答案(例如“quit = N,follow = N”)

--beep   有问题的时候发出哔哔声和/或发现SQL注入的时候

--cleanup   从sqlmap特定的UDF和表中清理DBMS

--dependencies     检查丢失(非核心)的sqlmap依赖项

--disable-coloring    禁用控制台输出颜色

--gpage = GOOGLEPAGE     使用来自指定页码的Google dork结果

--identify-waf      对WAF / IPS / IDS进行彻底的测试

--mobile     通过HTTP User-Agent头模仿智能手机

--offline     在离线模式下工作(仅使用会话数据)

--purge-output     安全地从输出目录中删除所有内容

--skip-waf     跳过启发式检测WAF / IPS / IDS保护

--smart     只有在积极的启发式(s)

--sqlmap-shell    提示交互式的sqlmap shell

--tmp-dir = TMPDIR      用于存储临时文件的本地目录

--web-root = WEBROOT     Web服务器文档根目录(例如“/ var / www”)

--wizard    向导初学者用户简单的向导界面


sqlmap效果与评价:

我还是那句话,kali里面提供的软件只要有官方网站的通常是不会很差的,虽然说现在sql注入难度变大了,但是还是有很多的网站它对sql注入还是做得不到位,特别是自己开发的项目,我见过太多新入行的程序员他们往往在开发项目的时候是没有太在意sql注入这个问题的。有关sqlmap详细知识请看下面:

官方网站:http://sqlmap.org/

使用手册:https://github.com/sqlmapproject/sqlmap

分享至 : QQ空间
收藏

2 个回复

倒序浏览
厉害
回复 使用道具 举报
666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册