当前位置:   article > 正文

SQL 注入神器:SQLMap 参数详解_sqlmap指定注入参数

sqlmap指定注入参数

一、介绍

SQLMap 是一款用于自动化 SQL 注入检测与渗透测试的开源工具,其主要功能是检测和利用 Web 应用程序中的 SQL 注入漏洞。以下是 SQLMap 的主要特点和功能:

  1. 自动化检测:SQLMap 可以自动发现 Web 应用程序中的 SQL 注入漏洞,包括基于 GET 和 POST 参数的注入点,以及 Cookie 和 HTTP 头部等。

  2. 支持多种数据库:SQLMap 支持检测和利用多种类型的数据库,包括 MySQL、Oracle、SQL Server、PostgreSQL 等。

  3. 综合测试:SQLMap 提供了丰富的测试选项,可以进行盲注、时间延迟注入、报错注入等多种测试方式,以验证注入漏洞的存在性和可利用性。

  4. 漏洞利用:SQLMap 能够利用发现的 SQL 注入漏洞执行各种操作,包括获取数据库中的数据、读取文件、执行系统命令等。

  5. 批量扫描:SQLMap 支持批量扫描,可以同时对多个目标进行检测和利用,提高效率。

  6. 细粒度控制:SQLMap 提供了丰富的命令行选项和配置参数,用户可以对扫描和利用过程进行细粒度的控制和定制。

  7. 报告生成:SQLMap 能够生成详细的扫描和利用报告,包括发现的漏洞、执行的操作和结果等信息,便于分析和整理。

总的来说,SQLMap 是一款功能强大的 SQL 注入工具,可帮助安全研究人员、渗透测试人员和开发人员发现和修复 Web 应用程序中的 SQL 注入漏洞,从而提高应用程序的安全性。

二、安装 SQLMap

Kail Linux 默认自带了这款工具,所以只需使用 Kail 即可 

三、使用 SQLMap

3.1 查看帮助

sqlmap -h 

参数解析:

  1. 基本选项:
  2. -h, --help: 显示基本的帮助信息并退出。
  3. -hh: 显示高级的帮助信息并退出。
  4. --version: 显示程序的版本号并退出。
  5. -v VERBOSE: 设置详细程度级别,范围从 0 到 6,默认是 1。
  6. 目标:
  7. -u URL, --url=URL: 指定目标 URL。
  8. -g GOOGLEDORK: 处理 Google dork 结果作为目标 URL。
  9. 请求:
  10. --data=DATA: 发送的 POST 数据字符串。
  11. --cookie=COOKIE: HTTP Cookie 头的值。
  12. --random-agent: 使用随机选择的 HTTP User-Agent 头值。
  13. --proxy=PROXY: 使用代理连接到目标 URL。
  14. --tor: 使用 Tor 匿名网络。
  15. --check-tor: 检查 Tor 是否被正确使用。
  16. 注入:
  17. -p TESTPARAMETER: 测试的参数。
  18. --dbms=DBMS: 强制后端数据库管理系统为提供的值。
  19. 检测:
  20. --level=LEVEL: 执行测试的级别(1-5,默认是 1)。
  21. --risk=RISK: 执行测试的风险级别(1-3,默认是 1)。
  22. 技术:
  23. --technique=TECH..: 要使用的 SQL 注入技术(默认是 "BEUSTQ")。
  24. 枚举:
  25. -a, --all: 检索所有信息。
  26. -b, --banner: 检索数据库管理系统的 banner。
  27. --current-user: 检索数据库管理系统的当前用户。
  28. --current-db: 检索当前数据库的名称(此参数描述被截断,所以完整功能可能还包括更多内容)。
  29. 这些参数提供了 sqlmap 的各种功能和定制选项,使用户能够根据自己的需求执行 SQL 注入测试和数据库接管任务。

3.2 高级帮助

sqlmap -hh

3.2.1 目标

至少需要提供以下选项之一来定义目标

  1. -u URL, --url=URL 目标URL(例如:"http://www.site.com/vuln.php?id=1"
  2. -d DIRECT 用于直接数据库连接的连接字符串
  3. -l LOGFILE 从Burp或WebScarab代理日志文件解析目标
  4. -m BULKFILE 扫描文本文件中提供的多个目标
  5. -r REQUESTFILE 从文件中加载HTTP请求
  6. -g GOOGLEDORK 处理Google Dork结果作为目标URL
  7. -c CONFIGFILE 从配置INI文件中加载选项

3.2.2 请求

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

  1. -A AGENT, --user-agent=AGENT 设置HTTP User-Agent头信息的值
  2. -H HEADER, --header=HEADER 添加额外的HTTP头信息(例如:"X-Forwarded-For: 127.0.0.1"
  3. --method=METHOD 强制使用指定的HTTP方法(例如:PUT)
  4. --data=DATA 通过POST发送的数据字符串(例如:"id=1"
  5. --param-del=PARAM_DELIMITER 用于分隔参数值的字符(例如:&)
  6. --cookie=COOKIE 设置HTTP Cookie头信息的值(例如:"PHPSESSID=a8d127e.."
  7. --cookie-del=COOKIE_DELIMITER 用于分隔cookie值的字符(例如:;)
  8. --live-cookies=LIVE_COOKIES 用于加载最新值的实时cookies文件
  9. --load-cookies=LOAD_COOKIES 包含以Netscape/wget格式编写的cookies的文件
  10. --drop-set-cookie 忽略响应中的Set-Cookie头信息
  11. --mobile 通过HTTP User-Agent头信息模拟智能手机
  12. --random-agent 使用随机选择的HTTP User-Agent头信息值
  13. --host=HOST 设置HTTP Host头信息的值
  14. --referer=REFERER 设置HTTP Referer头信息的值
  15. --headers=HEADERS 添加额外的头信息(例如:"Accept-Language: fr\nETag: 123"
  16. --auth-type=AUTH_TYPE HTTP认证类型(Basic, Digest, Bearer, ...)
  17. --auth-cred=AUTH_CREDENTIALS HTTP认证凭据(用户名:密码)
  18. --auth-file=AUTH_FILE HTTP认证PEM证书/私钥文件
  19. --abort-code=ABORT_CODE 在遇到(有问题的)HTTP错误代码时中止(例如:401)
  20. --ignore-code=IGNORE_CODE 忽略(有问题的)HTTP错误代码(例如:401)
  21. --ignore-proxy 忽略系统默认的代理设置
  22. --ignore-redirects 忽略重定向尝试
  23. --ignore-timeouts 忽略连接超时
  24. --proxy=PROXY 使用代理连接到目标URL
  25. --proxy-cred=PROXYCRED 设置代理的身份验证凭据(格式:用户名:密码)
  26. --proxy-file=PROXYFILE 从文件中加载代理列表
  27. --proxy-freq=PROXYFREQ 从给定列表中更换代理之间的请求次数
  28. --tor 使用Tor匿名网络
  29. --tor-port=TORPORT 设置非默认的Tor代理端口
  30. --tor-type=TORTYPE 设置Tor代理类型(HTTP、SOCKS4或SOCKS5(默认))
  31. --check-tor 检查Tor是否正确使用
  32. --delay=DELAY 每个HTTP请求之间的延迟(秒)
  33. --timeout=TIMEOUT 连接超时前的等待时间(默认30秒)
  34. --retries=RETRIES 连接超时时的重试次数(默认3次)
  35. --retry-on=RETRYON 当内容匹配正则表达式时重试请求(例如:"drop"
  36. --randomize=RPARAM 随机改变给定参数的值
  37. --safe-url=SAFEURL 在测试期间频繁访问的URL地址
  38. --safe-post=SAFEPOST 向安全URL发送的POST数据
  39. --safe-req=SAFEREQ 从文件中加载安全的HTTP请求
  40. --safe-freq=SAFEFREQ 在访问安全URL之间的常规请求频率
  41. --skip-urlencode 跳过有效负载数据的URL编码
  42. --csrf-token=CSRFTOKEN 用于存放反CSRF令牌的参数
  43. --csrf-url=CSRFURL 提取反CSRF令牌的URL地址
  44. --csrf-method=CSRFMETHOD 在访问反CSRF令牌页面时使用的HTTP方法
  45. --csrf-data=CSRFDATA 在访问反CSRF令牌页面时发送的POST数据
  46. --csrf-retries=CSRFRETRIES 反CSRF令牌检索的重试次数(默认0次)
  47. --force-ssl 强制使用SSL/HTTPS
  48. --chunked 使用HTTP分块传输编码(POST)请求
  49. --hpp 使用HTTP参数污染方法
  50. --eval=EVALCODE 在请求之前评估提供的Python代码(例如:"import hashlib;id2=hashlib.md5(id).hexdigest()"

3.2.3 优化

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

  1. -o 启用所有优化开关
  2. --predict-output 预测常见查询的输出
  3. --keep-alive 使用持久的HTTP(s)连接
  4. --null-connection 在不获取实际HTTP响应体的情况下检索页面长度
  5. --threads=THREADS 并发HTTP(s)请求的最大数量(默认为1)

3.2.4 注入

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

  1. -p TESTPARAMETER 要测试的参数
  2. --skip=SKIP 跳过给定参数的测试
  3. --skip-static 跳过测试非动态参数
  4. --param-exclude=.. 正则表达式,用于从测试中排除参数(例如:"ses"
  5. --param-filter=P.. 按位置选择可测试的参数(例如:"POST"
  6. --dbms=DBMS 强制后端DBMS为提供的值
  7. --dbms-cred=DBMS.. DBMS身份验证凭据(用户名:密码)
  8. --os=OS 强制后端DBMS操作系统为提供的值
  9. --invalid-bignum 使用大数来使值无效
  10. --invalid-logical 使用逻辑运算来使值无效
  11. --invalid-string 使用随机字符串来使值无效
  12. --no-cast 关闭负载转换机制
  13. --no-escape 关闭字符串转义机制
  14. --prefix=PREFIX 注入负载前缀字符串
  15. --suffix=SUFFIX 注入负载后缀字符串
  16. --tamper=TAMPER 使用给定的脚本来篡改注入数据

3.2.5 检测

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

  1. --level=LEVEL 要执行的测试级别(1-5,默认为1)
  2. --risk=RISK 要执行测试的风险等级(1-3,默认为1)
  3. --string=STRING 当查询评估为True时,要匹配的字符串
  4. --not-string=NOT.. 当查询评估为False时,要匹配的字符串
  5. --regexp=REGEXP 当查询评估为True时,要匹配的正则表达式
  6. --code=CODE 当查询评估为True时,要匹配的HTTP状态码
  7. --smart 仅当启发式结果为正时,才执行详尽的测试
  8. --text-only 仅基于文本内容比较页面
  9. --titles 仅基于标题比较页面

3.2.6 技巧

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

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

3.2.7 指纹

-f, --fingerprint 执行详尽的DBMS版本指纹检测

3.2.8 暴力

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

  1. --common-tables 检查常见表的存在性
  2. --common-columns 检查常见列的存在性
  3. --common-files 检查常见文件的存在性

3.2.9 用户自定义函数注入

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

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

3.2.10 文件系统访问 

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

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

3.2.11 枚举

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

  1. -a, --all 检索所有内容
  2. -b, --banner 检索DBMS横幅(版本信息)
  3. --current-user 检索DBMS当前用户
  4. --current-db 检索DBMS当前数据库
  5. --hostname 检索DBMS服务器主机名
  6. --is-dba 检测DBMS当前用户是否为DBA
  7. --users 枚举DBMS用户
  8. --passwords 枚举DBMS用户密码哈希
  9. --privileges 枚举DBMS用户权限
  10. --roles 枚举DBMS用户角色
  11. --dbs 枚举DBMS数据库
  12. --tables 枚举DBMS数据库表
  13. --columns 枚举DBMS数据库表列
  14. --schema 枚举DBMS模式
  15. --count 检索表的条目数量
  16. --dump 导出DBMS数据库表条目
  17. --dump-all 导出所有DBMS数据库表的条目
  18. --search 搜索列、表和/或数据库名
  19. --comments 在枚举期间检查DBMS注释
  20. --statements 检索在DBMS上运行的SQL语句
  21. -D DB 要枚举的DBMS数据库
  22. -T TBL 要枚举的DBMS数据库表
  23. -C COL 要枚举的DBMS数据库表列
  24. -X EXCLUDE 不枚举的DBMS数据库标识符
  25. -U USER 要枚举的DBMS用户
  26. --exclude-sysdbs 在枚举表时排除DBMS系统数据库
  27. --pivot-column=P.. 透视列名
  28. --where=DUMPWHERE 在导出表时使用WHERE条件
  29. --start=LIMITSTART 要检索的第一个表条目
  30. --stop=LIMITSTOP 要检索的最后一个表条目
  31. --first=FIRSTCHAR 要检索的查询输出单词的第一个字符
  32. --last=LASTCHAR 检索查询输出单词的最后一个字符
  33. --sql-query=SQLQ.. 执行指定的SQL语句
  34. --sql-shell 进入交互式SQL shell
  35. --sql-file=SQLFILE 从指定的文件(s)中执行SQL语句

3.2.12 操作系统访问

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

  1. --os-cmd=OSCMD 执行操作系统命令
  2. --os-shell 进入交互式操作系统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 远程临时文件目录的绝对路径

3.2.13 Windows注册表访问

这些选项可用于访问后端数据库管理系统的Windows注册表

  1. --reg-read 读取Windows注册表键值
  2. --reg-add 写入Windows注册表键值数据
  3. --reg-del 删除Windows注册表键值
  4. --reg-key=REGKEY Windows注册表键
  5. --reg-value=REGVAL Windows注册表键值
  6. --reg-data=REGDATA Windows注册表键值数据
  7. --reg-type=REGTYPE Windows注册表键值类型

3.2.14 通用选项

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

  1. -s SESSIONFILE 从存储的(.sqlite)文件中加载会话
  2. -t TRAFFICFILE 将所有HTTP流量记录到文本文件中
  3. --abort-on-empty 在结果为空时中止数据检索
  4. --answers=ANSWERS 设置预定义的答案(例如 "quit=N,follow=N"
  5. --base64=BASE64P.. 包含Base64编码数据的参数
  6. --base64-safe 使用URL和文件名安全的Base64字母表(RFC 4648)
  7. --batch 从不询问用户输入,使用默认行为
  8. --binary-fields=.. 具有二进制值的结果字段(例如 "digest"
  9. --check-internet 在评估目标之前检查互联网连接
  10. --cleanup 从DBMS中清除sqlmap特定的UDF和表
  11. --crawl=CRAWLDEPTH 从目标URL开始爬取网站
  12. --crawl-exclude=.. 用于从爬取中排除页面的正则表达式(例如 "logout"
  13. --csv-del=CSVDEL CSV输出中使用的分隔字符(默认为","
  14. --charset=CHARSET 盲注字符集(例如 "0123456789abcdef"
  15. --dump-file=DUMP.. 将转储数据保存到自定义文件
  16. --dump-format=DU.. 转储数据的格式(CSV(默认)、HTML或SQLITE)
  17. --encoding=ENCOD.. 用于数据检索的字符编码(例如 GBK)
  18. --eta 显示每个输出的预计到达时间
  19. --flush-session 刷新当前目标的会话文件
  20. --forms 解析并测试目标URL上的表单
  21. --fresh-queries 忽略会话文件中存储的查询结果
  22. --gpage=GOOGLEPAGE 使用指定页码上的Google dork结果
  23. --har=HARFILE 将所有HTTP流量记录到HAR文件中
  24. --hex 在数据检索期间使用十六进制转换
  25. --output-dir=OUT.. 自定义输出目录路径
  26. --parse-errors 解析并显示响应中的DBMS错误消息
  27. --preprocess=PRE.. 使用给定的脚本进行预处理(请求)
  28. --postprocess=PO.. 使用给定的脚本进行后处理(响应)
  29. --repair 重新转储含有未知字符标记(?)的条目
  30. --save=SAVECONFIG 将选项保存到配置文件(INI格式)
  31. --scope=SCOPE 用于过滤目标的正则表达式
  32. --skip-heuristics 跳过漏洞的启发式检测
  33. --skip-waf 跳过WAF/IPS保护的启发式检测
  34. --table-prefix=T.. 用于临时表的前缀(默认为 "sqlmap"
  35. --test-filter=TE.. 通过载荷和/或标题选择测试(例如 ROW)
  36. --test-skip=TEST.. 通过载荷和/或标题跳过测试(例如 BENCHMARK)
  37. --time-limit=TIM.. 在指定秒数内运行(例如 3600)
  38. --web-root=WEBROOT Web服务器文档根目录(例如 "/var/www"

3.2.15 杂项

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

  1. -z MNEMONICS 使用简短的助记符(例如 "flu,bat,ban,tec=EU"
  2. --alert=ALERT 当发现SQL注入时,运行主机操作系统命令
  3. --beep 在提问时和/或发现漏洞时发出蜂鸣声
  4. --dependencies 检查缺失的(可选)sqlmap依赖项
  5. --disable-coloring 禁用控制台输出的颜色
  6. --list-tampers 显示可用的篡改脚本列表
  7. --no-logging 禁用日志记录到文件
  8. --offline 在离线模式下工作(仅使用会话数据)
  9. --purge 安全地从sqlmap数据目录中删除所有内容
  10. --results-file=R.. 在多个目标模式下CSV结果文件的位置
  11. --shell 提示交互式sqlmap shell
  12. --tmp-dir=TMPDIR 用于存储临时文件的本地目录
  13. --unstable 为不稳定的连接调整选项
  14. --update 更新sqlmap
  15. --wizard 为初学者用户提供的简单向导界面
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号