共计 9323 个字符,预计需要花费 24 分钟才能阅读完成。
本文丸趣 TV 小编为大家详细介绍“sqlmap 参数有哪些及含义是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“sqlmap 参数有哪些及含义是什么”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。
Options(选项)
-h, –help 查看帮助,没什么好说的
-hh 查看全部的帮助
–version 查看版本
-v 显示信息的级别,一共有六级:0:只显示 python 错误和一些严重信息;1:显示基本信息(默认);2:显示 debug 信息;3:显示注入过程的 payload;4:显示 http 请求包;5:显示 http 响应头;7:显示 http 相应页面。
Target(目标)
-d 直接连目标后端接数据库,而不是使用 sql 注入漏洞,直接通过目标的侦听端口连接,当然需要有目标数据库的账号名和密码。例:-d mysql://user:password@192.168.75.128:3389/databasename –dbs 查询非常快。
-u 指定一个 url 连接,url 中必须有?xx=xx 才行(最常用的参数)例:-u www.abc.com/index.php?id=1
-l 后接一个 log 文件,可以是 burp 等的代理的 log 文件,之后 sqlmap 会扫描 log 中的所有记录。例:-l log.txt
-x 站点地图,提交给 sql 一个 xml 文件。
-m 后接一个 txt 文件,文件中是多个 url,sqlmap 会自动化的检测其中的所有 url。例:-m target.txt
-r 可以将一个 post 请求方式的数据包保存在一个 txt 中,sqlmap 会通过 post 方式检测目标。例:-r post.txt
-g 使用 google 引擎搜索类似的网址,并且多目标检测。例:-g inurl:\ .php?id=1\ \ 是转义
-c 将使用的命令写在一个文件中,让 sqlmap 执行文件中的命令,我们可以用 –save 命令将配置写入文件。
Request(请求)
–method=METHOD 指定是 get 方法还是 post 方法。例:–method=GET –method=POST
–data=DATA 指明参数是哪些。例:-u www.abc.com/index.php?id=1 –data= name=1 pass=2
–param-del=PARA. 指明使用的变量分割符。例:-u www.abc.com/index.php?id=1 –data= name=1;pass=2 –param-del=
–cookie=COOKIE 指定测试时使用的 cookie,通常在一些需要登录的站点会使用。例:-u www.abc.com/index.php?id=1 –cookie= a=1;b=2
–cookie-del=COO.. 和前面的 –param-del=PARA. 类似,就是指明分割 cookie 的字符。
–load-cookies=L.. 从包含 Netscape / wget 格式的 cookie 的文件中加载 cookie。
–drop-set-cookie 默认情况下,sqlmap 是开启 set-cookie 功能的,也就是当收到一个含有 set-cookie 的 http 包的时候,下次 sql 会使用新的 cookie 进行发包,如果使用这条命令,就会关闭这个功能。在 level = 2 时会检测 cookie 注入。
–user-agent=AGENT 指定一个 user-agent 的值进行测试。例:–user-agent= aaaaaaa 默认情况下,sqlmap 会使用自己的 user-agent 进行测试(所以很多服务器发现 user-agent 是 sqlmap 的数据包直接认为是入侵),sqlmap 自己的 user-agent 是:sqlmap/1.0-dev-nongit-201603020a89(http://sqlmap.org)
–random-agent 使用随机 user-agent 进行测试。sqlmap 有一个文件中储存了各种各样的 user-agent,文件在 sqlmap/txt/user-agent.txt 在 level = 3 时会检测 user-agent 注入。
–host=HOST 指定 http 包中的 host 头参数。例:–host= aaaaaa 在 level = 5 时才会检查 host 头注入。\n 是换行
–referer=REFERER 指定 http 包中的 refere 字段。例:–refere= aaaaa 在 level = 3 时才会检测 refere 注入。
-H –headers 额外的 header 头,每个占一行。例:–headers= host:www.a.com\nUser-Agent:yuangh
–headers=HEADERS 跟上边一样,再举一个例子:–headers= Accept-Language: fr\nETag: 123 注意所有构造 http 包的部分均区分大小写
–auth-type=AUTH.. 基于 http 身份验证的种类。例:–auth-type Basic/Digest/NTLM 一共有三种认证方式。
–auth-cred=AUTH.. 使用的认证,例:–auth-type Basic –auth-cred user:password
–auth-file=AUTH.. 使用.PEM 文件中的认证。例:–auth-file= AU.PEM 少见。
–ignore-code=IG.. 无视 http 状态码。例:–ignore-code=401
–ignore-proxy 无视本地的代理,有时候机器会有最基本的代理配置,在扫描本地网段的时候会很麻烦,使用这个参数可以忽略代理设置。
–ignore-redirects 无视 http 重定向,比如登录成功会跳转到其他网页,可使用这个忽略掉。
–ignore-timeouts 忽略连接超时。
–proxy=PROXY 指定一个代理。例:–proxy= 127.0.0.1:8087 使用 GoAgent 代理。
–proxy-cred=PRO.. 代理需要的认证。例:–proxy= name:password
–proxy-file=PRO.. 从一个文件加载代理的认证。
–tor 使用 tor 匿名网络,不懂。
–tor-port=TORPORT 设置默认的 tor 代理端口,不懂 +2。
–tor-type=TORTYPE 设置 tor 代理种类,(HTTP, SOCKS4 or SOCKS5 (默认)),不懂 +3。
–check-tor 检查是否正确使用 Tor,不懂 +4。
–delay=DELAY 每次发包的延迟时间,单位为秒,浮点数。例:–delay 2.5 有时候频繁的发包会引起服务器注意,需要使用 delay 降低发包频率。
–timeout=TIMEOUT 请求超时的时间,单位为秒,浮点数,默认 30s。
–retries=RETRIES 超时重连次数,默认三次。例:–retries=5
–randomize=RPARAM 参数的长度,类型与输入值保持一致的前提下,每次请求换参数的值。有时候反复的提交同一个参数会引起服务器注意。
–safe-url=SAFEURL 用法和 - u 类似,就是一个加载测试 url 的方法,但额外功能是防止有时候时间长了不通讯服务器会销毁 session,开启这种功能会隔一段时间发一个包保持 session。
–safe-post=SAFE.. 和上面的一样,只是使用 post 的方式发送数据。
–safe-req=SAFER.. 和上面的一样,只是从一个文件获得目标。
–safe-freq=SAFE.. 频繁的发送错误的请求,服务器也会销毁 session 或者其他惩罚方式,开启这个功能之后,发几次错的就会发一次对的。通常用于盲注。
–skip-urlencode 跳过 url 编码,毕竟不排除有的奇葩网站 url 不遵守 RFC 标准编码。
–csrf-token=CSR.. 保持 csrf 令牌的 token。
–csrf-url=CSRFURL 访问 url 地址获取 csrf 的 token。
–force-ssl 强制使用 ssl。
–hpp 使用 http 参数污染,通常 http 传递参数会以名称 - 值对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在 HTTP 协议中是允许同样名称的参数出现多次的,就可能造成参数篡改。
–eval(id).hexdigest()
Optimization(最佳选择)
-o 开启下面三项(–predict-output,–keep-alive,–null-connection)
–predict-output 预设的输出,可以理解为猜一个表存在不存在,根据服务器返回值来进行判断,有点类似暴力破解,但和暴力破解又不同,这个是一个范围性的暴力破解,一次一次的缩小范围。
–keep-alive 使用 http(s)长链接,性能更好,避免重复建立链接的开销,但占用服务器资源,而且与 –proxy 不兼容。
–null-connection 只看页面返回的大小值,而不看具体内容,通常用于盲注或者布尔的判断,只看对错,不看内容。
–threads=THREADS 开启多线程,默认为 1,最大 10。和 –predict-output 不兼容。
Injection(注入)
-p TESTPARAMETER 知道测试的参数,使用这个的话 –level 参数就会失效。例:-p user-agent,refere
–skip=SKIP 排除指定的参数。例:–level 5 –skip= id,user-agent
–skip-static 跳过测试静态的参数。
–param-exclude=.. 使用正则表达式跳过测试参数。
–dbms=DBMS 指定目标数据库类型。例:–dbms= MySQL 5.0 Oracle 11i Microsoft SQL Server 2005
–dbms-cred=DBMS.. 数据库的认证。利:–dbms-cred= name:password
–os=OS 指定目标操作系统。例:–os= Linux/Windows
–invalid-bignum 通常情况下 sqlmap 使用负值使参数失效,比如 id=1- id=-1, 开启这个之后使用大值使参数失效,如 id=9999999999。
–invalid-logical 使用逻辑使参数失效,如 id=1 and 1=2。
–invalid-string 使用随机字符串使参数失效。
–no-cast 获取数据时,sqlmap 会将所有数据转换成字符串,并用空格代替 null。
–no-escape 用于混淆和避免出错,使用单引号的字符串的时候,有时候会被拦截,sqlmap 使用 char()编码。例如:select“a”- select char(97)。
–prefix=PREFIX 指定 payload 前缀,有时候我们猜到了服务端代码的闭合情况,需要使用这个来指定一下。例:-u www.abc.com/index?id=1 -p id –prefix ) –suffix and (abc = abc
–suffix=SUFFIX 指定后缀,例子同上。
–tamper=TAMPER 使用 sqlmap 自带的 tamper,或者自己写的 tamper,来混淆 payload,通常用来绕过 waf 和 ips。
Detection(探测)
–level=LEVEL 设置测试的等级(1-5,默认为 1)lv2:cookie; lv3:user-agent,refere; lv5:host 在 sqlmap/xml/payloads 文件内可以看见各个 level 发送的 payload
–risk=RISK 风险(1-4,默认 1)升高风险等级会增加数据被篡改的风险。risk 2:基于事件的测试;risk 3:or 语句的测试;risk 4:update 的测试
–string=STRING 在基于布尔的注入时,有的时候返回的页面一次一个样,需要我们自己判断出标志着返回正确页面的标志,会根据页面的返回内容这个标志(字符串)判断真假,可以使用这个参数来制定看见什么字符串就是真。
–not-string=NOT.. 同理,这个参数代表看不见什么才是真。
–regexp=REGEXP 通常和上面两种连用,使用正则表达式来判断。
–code=CODE 也是在基于布尔的注入时,只不过指定的是 http 返回码。
–text-only 同上,只不过指定的是页面里的一段文本内容。
–titles 同上,只不过指定的是页面的标题。
Techniques(技巧)
–technique=TECH 指定所使用的技术(B: 布尔盲注;E: 报错注入;U: 联合查询注入;S: 文件系统,操作系统,注册表相关注入;T: 时间盲注; 默认全部使用)
–time-sec=TIMESEC 在基于时间的盲注的时候,指定判断的时间,单位秒,默认 5 秒。
–union-cols=UCOLS 联合查询的尝试列数,随 level 增加,最多支持 50 列。例:–union-cols 6-9
–union-char=UCHAR 联合查询默认使用的占列的是 null,有些情况 null 可能会失效,可以手动指定其他的。例:–union-char 1
–union-from=UFROM 联合查询从之前的查询结果中选择列,和上面的类似。
–dns-domain=DNS.. 如果你控制了一台 dns 服务器,使用这个可以提高效率。例:–dns-domain 123.com
–second-order=S.. 在这个页面注入的结果,在另一个页面显示。例:–second-order 1.1.1.1/b.php
Fingerprint
-f, –fingerprint 指纹信息,返回 DBMS,操作系统,架构,补丁等信息。
Enumeration(枚举)
-a, –all 查找全部,很暴力。直接用 -a
-b, –banner 查找数据库管理系统的标识。直接用 -b
–current-user 当前用户,常用,直接用 –current-user
–current-db 当前数据库,常用,直接用 –current-db
–hostname 主机名,直接用 –hostname
–is-dba
–users 查询一共都有哪些用户,常用,直接用 –users
–passwords 查询用户密码的哈希,常用,直接用 –passwords
–privileges 查看特权,常用。例:–privileges -U username (CU 就是当前用户)
–roles 查看一共有哪些角色(权限),直接用 –roles
–dbs 目标服务器中有什么数据库,常用,直接用 –dbs
–tables 目标数据库有什么表,常用,直接用 –tables
–columns 目标表中有什么列,常用,直接用 –colums
–schema 目标数据库数据库系统管理模式。
–count 查询结果返回一个数字,即多少个。
–dump 查询指定范围的全部数据。例:–dump -D admin -T admin -C username
–dump-all 查询全部数据。例:–dump-all –exclude-sysdbs
–search 搜索列、表和 / 或数据库名称。
–comments 检索数据库的备注。
-D DB 指定从某个数据库查询数据,常用。例:-D admindb
-T TBL 指定从某个表查询数据,常用。例:-T admintable
-C COL 指定从某个列查询数据,常用。例:-C username
-X EXCLUDE 指定数据库的标识符。
-U USER 一个用户,通常和其他连用。例:–privileges -U username (CU 就是当前用户)
–exclude-sysdbs 除了系统数据库。
–pivot-column=P.. 枢轴列名,不懂。
–where=DUMPWHERE 在 dump 表时使用 where 限制条件。
–start=LIMITSTART 设置一个起始,通常和 –dunmp 连用。
–stop=LIMITSTOP 同上,设置一个结束。
–first=FIRSTCHAR 以第一个查询输出的字符检索,不懂。
–last=LASTCHAR 以最后一个查询输出的字符检索,不懂 +2。
–sql-query=QUERY 执行一个 sql 语句。
–sql-shell 创建一个 sql 的 shell。
–sql-file=SQLFILE 执行一个给定文件中的 sql 语句
Brute force(暴力破解)
–common-tables 检查有没有记录表信息的公共表,比如 mysql =5.0 会有一个 information_schema 库,储存了整个数据库的基本信息。有这个会方便很多。
–common-columns 有没有记录公共列的表,比如 Access 就没有列信息。这两种方法都会使用暴力破解。
User-defined function injection
–udf-inject 编译共享库创建并上传至 DB Server,生成 UDF 实现高级注入,不懂。
–shared-lib=SHLIB 同上,不懂。
File system access(文件系统访问)
–file-read=RFILE 读取目标站点的一个文件。例:–file-read= /etc/password
–file-write=WFILE 写入到目标站点的一个文件,通常和 –sql-query 连用。例:–sql-query= select 一句话木马 –file-write= shell.php
–file-dest=DFILE 同上,只是使用绝对路径写入。
Operating system access(操作系统访问)
–os-cmd=OSCMD 执行一句系统命令。例:–os-shell= ipconfig -all
–os-shell 创建一个对方操作系统的 shell,远程执行系统命令。直接用即可 –os-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 registry access(windows 注册表访问)
–reg-read 读一个 Windows 注册表。
–reg-add 添加一个注册表。
–reg-del 删一个注册表。
–reg-key=REGKEY 和之前连用,注册表 key 值。
–reg-value=REGVAL 和之前连用,注册表值。
–reg-data=REGDATA 和之前连用,注册表数据。
–reg-type=REGTYPE 和之前连用,注册表类别。
General(一般)
-s SESSIONFILE 从一个文件加载保存的 session。
-t TRAFFICFILE 记录流文件的保存位置。
–batch 批处理,在检测过程中会问用户一些问题,使用这个参数统统使用默认值。
–binary-fields=.. 指定二进制结果的字段。
–check-internet 在评估目标之前检查互联网连接,新功能。
–crawl=CRAWLDEPTH 从起始位置爬取的深度。例:–crawl=3
–crawl-exclude=.. 除了哪些页面之外全部爬取。例:–crawl-exclude= abc.com/logout.php
–csv-del=CSVDEL 指定在 CSV 输出中使用的分隔字符。
–charset=CHARSET 强制字符串编码。例:–charset=GBK
–dump-format=DU.. 转储数据的格式,有 (CSV (默认),HTML,SQLITE) 三种。
–encoding=ENCOD.. 用于数据检索的字符编码。例:–encoding=GBK
–eta 显示每个输出的预计到达时间。
–flush-session 清空会话信息。
–forms 在目标 URL 上解析和测试表单。
–fresh-queries sqlmap 每次查询都会讲查询结果储存在.sqlmap 文件夹中,下次再有相同测查询会调用上次的查询结果,使用这个参数可以忽略文件中有的记载结果,重新查询。
–har=HARFILE 将所有 http 流量记录在一个 har 文件中。
–hex dump 非 ascii 字符时,将其编码为 16 进制,收到后解码还原。
–output-dir=OUT.. 输出结果至文件。例:–output-dir=/tmp
–parse-errors 解析并显示报错信息。
–save=SAVECONFIG 将使用的命令保存到配置 ini 文件
–scope=SCOPE 和 - l 类似,只是这个可以过滤信息,使用正则表达式过滤网址。
–test-filter=TE.. 根据有效负载和 / 或标题,不懂。
–test-skip=TEST.. 根据有效负载和 / 或标题跳过测试,不懂 +2。
–update 更新 sqlmap。
Miscellaneous(杂项)
-z MNEMONICS 参数助记符,比较傻的一个功能。例:-z bat,randoma,ign,tec=BEU 其实就是只要你写的字母可以唯一匹配其他参数,就可以生效。
–alert=ALERT 在找到 SQL 注入时运行主机 OS 命令。
–answers=ANSWERS 设置问题答案,在刚刚的 –batch 可以跳过很多问题,但只是选择默认值,可以使用者个参数对特定问题设定特定答案。例:–answer extending=N
–beep 在问题和 / 或当 SQL 注入被发现时发出嘟嘟声。。。。。。。。。
–cleanup 从 SqLMAP 特定的 UDF 和表中找数据库,类似暴力破解。
–dependencies 检查缺少的 Sql 映射依赖项。
–disable-coloring 禁用控制台输出着色。
–gpage=GOOGLEPAGE 在指定页使用 google 结果,不懂。
–identify-waf 识别目标的防火墙。
–mobile cosplay 手机。
–offline 在脱机模式下工作。
–purge-output 情况输出文件夹。
–skip-waf 跳过 WAF/IPS/IDS 保护的启发式检测。
–smart 有大量检测目标时候,只选择基于错误的检测。
–sqlmap-shell 创建一个交互的 sqlmap_shell,不懂。
–tmp-dir=TMPDIR 更改存储临时文件的本地目录。
–web-root=WEBROOT 设置 Web 服务器文档根目录。例:–web-root= /var/www
–wizard 新手教程。
读到这里,这篇“sqlmap 参数有哪些及含义是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。