Sqlmap 详细使用攻略

天大地大妈咪最大 提交于 2020-01-30 02:53:32

目录

1. 前言

2. 简介

3. 使用参数详解

1.3.1 选项

1.3.2 目标

1.3.3 请求

1.3.4 优化

1.3.5 注入

1.3.6 检测

1.3.7 技巧

1.3.8 指纹

1.3.9 枚举

1.3.10 暴力

1.3.11 用户自定义函数注入

1.3.12 访问文件系统

1.3.13 操作系统访问

1.3.14 Windows注册表访问

1.3.15 一般选项

1.3.16 其他

4. 参考


 

1. 前言

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

 

 

2. 简介

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

sqlmap支持五种不同的注入模式:

l  基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

l  基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

l  基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;

l  联合查询注入,可以使用union的情况下的注入;

l  堆查询注入,可以同时执行多条语句的执行时的注入。

 

 

3. 使用参数详解

用法: sqlmap.py [选项]

 

1.3.1 选项

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

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

 –version  显示程序版本信息并退出

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

 

1.3.2 目标

在这些选项中必须提供至少有一个确定目标

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

-u URL, –url=URL   目标URL (e.g.”http://www.site.com/vuln.php?id=1“),使用-u或者–url

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

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

-m BULKFILE      将目标地址保存在文件中,一行为一个URL地址进行批量检测。

-r REQUESTFILE   从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个–force-ssl参数来使用,或者可以在Host头后门加上:443

-g GOOGLEDORK     从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理)

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

 

1.3.3 请求

这些选项可以用来指定如何连接到目标URL

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

    --data=DATA   通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数。--data="id=1" -f --banner --dbs --users

   –param-del=PARA..  当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。

   –cookie=COOKIE     HTTP Cookieheader 值

   –cookie-del=COO..  用来分隔cookie的字符串值

   –load-cookies=L..  Filecontaining cookies in Netscape/wget format

   –drop-set-cookie   IgnoreSet-Cookie header from response

   –user-agent=AGENT  默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用–user-agent参数来修改,同时也可以使用–random-agent参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入

  –random-agent     使用random-agent作为HTTP User-Agent头值

   –host=HOST         HTTP Hostheader value

   –referer=REFERER   sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或者3以上的时候会尝试对referer注入

   -H HEADER, –hea..  额外的http头(e.g.”X-Forwarded-For: 127.0.0.1″)

   –headers=HEADERS  可以通过–headers参数来增加额外的http头(e.g.”Accept-Language: fr\nETag: 123″)

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

   –auth-cred=AUTH..  HTTP 认证凭证(name:password)

   –auth-file=AUTH..  HTTP 认证PEM证书/私钥文件;当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file,key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。

   –ignore-401        Ignore HTTPError 401 (Unauthorized)忽略HTTP 401错误(未授权的)

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

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

   –ignore-timeouts   忽略连接超时

   –proxy=PROXY       使用代理服务器连接到目标URL

   –proxy-cred=PRO..  代理认证凭证(name:password)

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

   –tor               使用Tor匿名网络

   –tor-port=TORPORT  设置Tor代理端口

   –tor-type=TORTYPE  设置Tor代理类型 (HTTP,SOCKS4 or SOCKS5 (缺省))

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

   –delay=DELAY   可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。

   –timeout=TIMEOUT   可以设定一个HTTP(S)请求超过多久判定为超时,10表示10秒,默认是30秒。

   –retries=RETRIES   当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。

   –randomize=RPARAM可以设定某一个参数值在每一次请求中随机的变化,长度和类型会与提供的初始值一样

   –safe-url=SAFEURL  提供一个安全不错误的连接,每隔一段时间都会去访问一下

   –safe-post=SAFE..  提供一个安全不错误的连接,每次测试请求之后都会再访问一遍安全连接。

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

   –safe-freq=SAFE..  测试一个给定安全网址的两个访问请求

   –skip-urlencode    跳过URL的有效载荷数据编码

   –csrf-token=CSR..  Parameter usedto hold anti-CSRF token参数用来保存反CSRF令牌

   –csrf-url=CSRFURL  URL地址访问提取anti-CSRF令牌

   –force-ssl         强制使用SSL/HTTPS

   –hpp               使用HTTP参数污染的方法

   –eval=EVALCODE     在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–eval参数在每次请求时根据所写python代码做完修改后请求。(e.g “import hashlib;id2=hashlib.md5(id).hexdigest()”)

 sqlmap.py -u”http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b“–eval=”import hashlib;hash=hashlib.md5(id).hexdigest()”

 

1.3.4 优化

这些选项可用于优化sqlmap性能

-o               打开所有的优化开关

–predict-output    预测普通查询输出

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

–null-connection   获取页面长度

–threads=THREADS   当前http(s)最大请求数 (默认 1)

 

1.3.5 注入

这些选项可用于指定要测试的参数、提供自定义注入有效载荷和可选的篡改脚本。

   -p TESTPARAMETER    可测试的参数

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

   –skip-static       跳过测试不显示为动态的参数

   –param-exclude=..  使用正则表达式排除参数进行测试(e.g. “ses”)

   –dbms=DBMS         强制后端的DBMS为此值

   –dbms-cred=DBMS..  DBMS认证凭证(user:password)

   –os=OS            强制后端的DBMS操作系统为这个值

   –invalid-bignum    使用大数字使值无效

   –invalid-logical   使用逻辑操作使值无效

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

   –no-cast          关闭有效载荷铸造机制

   –no-escape         关闭字符串逃逸机制

   –prefix=PREFIX     注入payload字符串前缀

   –suffix=SUFFIX     注入payload字符串后缀

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

 

1.3.6 检测

这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容

   –level=LEVEL     执行测试的等级(1-5,默认为1)

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

   –string=STRING    查询时有效时在页面匹配字符串

   –not-string=NOT..  当查询求值为无效时匹配的字符串

   –regexp=REGEXP     查询时有效时在页面匹配正则表达式

   –code=CODE       当查询求值为True时匹配的HTTP代码

   –text-only        仅基于在文本内容比较网页

   –titles           仅根据他们的标题进行比较

 

1.3.7 技巧

这些选项可用于调整具体的SQL注入测试

   –technique=TECH    SQL注入技术测试(默认BEUST)

   –time-sec=TIMESEC  DBMS响应的延迟时间(默认为5秒)

   –union-cols=UCOLS  定列范围用于测试UNION查询注入

   –union-char=UCHAR  暴力猜测列的字符数

   –union-from=UFROM  SQL注入UNION查询使用的格式

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

   –second-order=S..  URL搜索产生的结果页面

 

1.3.8 指纹

-f, –fingerprint   执行广泛的DBMS版本指纹检查

 

1.3.9 枚举

这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行自定义的SQL语句。

   -a, –all           获取所有信息

   -b, –banner        获取数据库管理系统的标识

   –current-user      获取数据库管理系统当前用户

   –current-db        获取数据库管理系统当前数据库

    –hostname         获取数据库服务器的主机名称

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

   –users             枚举数据库管理系统用户

   –passwords         枚举数据库管理系统用户密码哈希

   –privileges        枚举数据库管理系统用户的权限

   –roles            枚举数据库管理系统用户的角色

   –dbs             枚举数据库管理系统数据库

   –tables            枚举的DBMS数据库中的表

   –columns          枚举DBMS数据库表列

   –schema            枚举数据库架构

   –count             检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url –count -D testdb

   –dump            转储数据库表项

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

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

   –comments          获取DBMS注释

   -D DB               要进行枚举的指定数据库名

   -T TBL              DBMS数据库表枚举

   -C COL             DBMS数据库表列枚举

   -X EXCLUDECOL     DBMS数据库表不进行枚举

   -U USER           用来进行枚举的数据库用户

   –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文件

 

1.3.10 暴力

这些选项可以被用来运行暴力检查

   –common-tables     检查存在共同表

   –common-columns    检查存在共同列

 

1.3.11 用户自定义函数注入

这些选项可以用来创建用户自定义函数

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

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

 

1.3.12 访问文件系统

这些选项可以被用来访问后端数据库管理系统的底层文件系统

   –file-read=RFILE   从后端的数据库管理系统文件系统读取文件,SQL Server2005中读取二进制文件example.exe:

sqlmap.py -u”http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther“–file-read “C:/example.exe” -v 1

   –file-write=WFILE  编辑后端的数据库管理系统文件系统上的本地文件

   –file-dest=DFILE   后端的数据库管理系统写入文件的绝对路径

在kali中将/software/nc.exe文件上传到C:/WINDOWS/Temp下:

python sqlmap.py -u”http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1” –file-write”/software/nc.exe” –file-dest “C:/WINDOWS/Temp/nc.exe” -v1

 

1.3.13 操作系统访问

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

   –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  远程临时文件目录的绝对路径

linux查看当前用户命令:

sqlmap.py -u”http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1” –os-cmd id -v1

 

1.3.14 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注册表项值类型

 

1.3.15 一般选项

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

   -s SESSIONFILE     保存和恢复检索会话文件的所有数据

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

   –batch            从不询问用户输入,使用所有默认配置。

   –binary-fields=..  结果字段具有二进制值(e.g.”digest”)

   –charset=CHARSET   强制字符编码

   –crawl=CRAWLDEPTH  从目标URL爬行网站

   –crawl-exclude=..  正则表达式从爬行页中排除

   –csv-del=CSVDEL    限定使用CSV输出 (default”,”)

   –dump-format=DU..  转储数据格式(CSV(default), HTML or SQLITE)

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

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

   –forms           解析和测试目标URL表单

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

   –hex             使用DBMS Hex函数数据检索

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

   –parse-errors      解析和显示响应数据库错误信息

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

   –scope=SCOPE    从提供的代理日志中使用正则表达式过滤目标

   –test-filter=TE..  选择测试的有效载荷和/或标题(e.g. ROW)

   –test-skip=TEST..  跳过试验载荷和/或标题(e.g.BENCHMARK)

   –update            更新sqlmap

 

1.3.16 其他

   -z MNEMONICS        使用短记忆法 (e.g.”flu,bat,ban,tec=EU”)

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

   –answers=ANSWERS   当希望sqlmap提出输入时,自动输入自己想要的答案(e.g. “quit=N,follow=N”),例如:sqlmap.py -u”http://192.168.22.128/get_int.php?id=1“–technique=E–answers=”extending=N” –batch

   –beep    发现sql注入时,发出蜂鸣声。

   –cleanup     清除sqlmap注入时在DBMS中产生的udf与表。

   –dependencies      Check formissing (non-core) sqlmap dependencies

   –disable-coloring  默认彩色输出,禁掉彩色输出。

   –gpage=GOOGLEPAGE 使用前100个URL地址作为注入测试,结合此选项,可以指定页面的URL测试

   –identify-waf      进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别

   –mobile     有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登陆。

   –offline           Work inoffline mode (only use session data)

   –purge-output     从输出目录安全删除所有内容,有时需要删除结果文件,而不被恢复,可以使用此参数,原有文件将会被随机的一些文件覆盖。

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

   –smart            进行积极的启发式测试,快速判断为注入的报错点进行注入

   –sqlmap-shell      互动提示一个sqlmapshell

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

   –web-root=WEBROOT  Web服务器的文档根目录(e.g.”/var/www”)

   –wizard   新手用户简单的向导使用,可以一步一步教你如何输入针对目标注入

 

4. 参考

超详细SQLMap使用攻略及技巧分享  (文章作者:simeon,来自 FreeBuf.COM)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!