SQLmap使用指南(包含使用SQLmap获取shell)

文章标题

  • 一:SQLmap基础知识
  • 二:SQLmap各大模块中的常用命令
    • (一) 基础命令
    • (二) target模块
    • (三) Emuneration模块
    • (四)其他命令
  • 三:SQLmap应用示例
    • (一)基于GET数据传输方式
    • (二)基于POST数据传输方式
  • 四:使用SQLmap获取站点的Shell

一:SQLmap基础知识

二:SQLmap各大模块中的常用命令

(一) 基础命令

(二) target模块

(三) Emuneration模块

(四)其他命令

三:SQLmap应用示例

(一)基于GET数据传输方式

(二)基于POST数据传输方式

四:使用SQLmap获取站点的Shell

一:SQLmap基本知识
Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。
关于SQLmap的下载和安装,可查看笔者相关博文:SQLmap使用教程_sqlmap打开_北冥同学的博客-CSDN博客

二:SQLmap各大模块中的常用命令
(一) 基础命令
–version   查看sqlmap版本信息
-h 或 --help    查看功能参数
-hh 显示高级帮助信息
-v  显示更详细的信息 一共7级, 从0-6.默认为1, 数值越大,信息显示越详细
0: 只显示python错误以及重要信息
1: 显示信息以及警告
2: 显示debug消息
3: 显示注入payload
4: 显示http请求
5: 显示http响应头
6: 显示http响应内容
–level 探测等级
一共有5个等级(1-5) 不加 level 时,默认是1。 5级包含的payload最多,会自动破解出cookie、XFF等头部注入,相对应的速度也比较慢。
level=2 http cookie测试
level=3 http user-agent/referer头测试
在不能确定哪个payload或参数为注入点时,建议使用高的level值。
–risk 探测风险(共3个等级 默认为1)
–-is-dba: 查看当前用户是否为管理权限
该命令用于查询当前账户是否为数据库管理员用户,是就会返回true,反之则是false。
–roles: 列出数据库管理员角色
–sql-shell: 运行自定义SQL语句
–file-read: 从数据库服务器中读取文件 该命令用于读取执行文件,读取的文件可以是文本,也可以是二进制文件,前提是有权限使用特定的函数且数据库为MySQL、PostgreSQL或Microsoft SQL Server

(二) target模块
-u 用于GET传值检测注入点,表示指定URL
-m 表示指定文件,用于批量扫描
-r 用于POST传值检测注入点
–cookie 表示指定数据库
-T 表示指定数据表
-C 表示指定字段

(三)Emuneration模块
-a 表示查询所有
-b 查询数据库版本信息
–current-user 查询当前用户
–current-db 查询当前数据库
–is-dba 查询当前用户是否为管理员
–users 枚举所有的用户
–privileges 枚举用户的权限
–paswords 枚举用户密码的哈希值
–dbs 查询所有的数据库
–tables 查询数据库中所有的表
–columns 查询数据库表中所有的列
–count 检索表的条目的数量
–dump 存储数据库的表中的数据
–dump-all 存储所有数据库表中的数据
–D db 表示指定进行枚举的数据库名称
–T table 指定进行枚举的数据库表名称
–C column 指定进行枚举的数据库列名称
–exclude-sysdbs 枚举表时排除系统数据库
–sql-query 指定查询的sql语句
–sql-shell 提示输入一个交互式sql shell
–tamper 用于WAF绕过
–host 获取服务器主机名称

(四)其他命令
–batch 表示不再询问
–method=GET 指定请求方式
–referer 表示自定义referer
–proxy=“127.0.0.1” 表示代理
–threads 10 设置线程数

三:SQLmap应用示例
(一)基于GET数据传输方式
基础语法: sqlmap.py -u “URL”
注意:示例以sqli-labs靶场为例
第一步:测试是否存在注入点。(第一次测试目标站点会询问测试是否还有其他数据库和所使用的等级等,看具体情况进行选择)
SQLmap使用指南(包含使用SQLmap获取shell)_第1张图片
SQLmap使用指南(包含使用SQLmap获取shell)_第2张图片
第二步:查库名。 语法: sqlmap.py -u “URL” –dbs (注意:使用sqlmap.py -u “URL” –dbs命令会爆破出该服务器的所有数据库名,要精确到当前目标站点的数据库名可使用命令: sqlmap.py -u “URL” --current–db
SQLmap使用指南(包含使用SQLmap获取shell)_第3张图片
第三步:查表名。 语法: sqlmap.py -u “URL” -D “数据库名” –talbes
SQLmap使用指南(包含使用SQLmap获取shell)_第4张图片
第四步:查字段名。语法: sqlmap.py -u “URL” -D “数据库名” -T “表名” --columns
SQLmap使用指南(包含使用SQLmap获取shell)_第5张图片
第五步:进行拖库。语法: sqlmap.py -u “URL” -D “数据库名” -T “表名” –columns -C “字段名1,字段名2”
SQLmap使用指南(包含使用SQLmap获取shell)_第6张图片

(二)基于POST数据传输方式
(1)方式一:先使用BurpSuit抓包,保存抓取到的内容,将其存放在某个目录下。(如:C:\Users\Test\Desktop\Less-11.txt)
SQLmap使用指南(包含使用SQLmap获取shell)_第7张图片
语法:sqlmap.py -r “文件路径”
注意:由于数据包请求头中有众多参数,若所有参数都进行扫描,相对而言任务量较大,耗时较长。因此,使用 -p 指定扫描参数。
语法:sqlmap.py -r “文件路径” -p “指定参数”
SQLmap使用指南(包含使用SQLmap获取shell)_第8张图片
注意:查库名、表名、字段名、拖库步骤和上文GET方式一致,不再赘述。
(2)方式二:使用指定扫描参数。既使用BurpSuit抓包之后,将抓包内容存储到某个文件中,同时在需要扫描的参数后使用
SQLmap使用指南(包含使用SQLmap获取shell)_第9张图片
语法:语法:sqlmap.py -r “文件路径”
SQLmap使用指南(包含使用SQLmap获取shell)_第10张图片
(3)方式三:自动搜索表单方式
语法:sqlmap.py -u “URL” --forms
SQLmap使用指南(包含使用SQLmap获取shell)_第11张图片
(4)方式四:使用 -data
语法: sqlmap.py -r “文件路径” -data “指定参数”

四:使用SQLmap获取站点的Shell
概念解释:WebShell就是以asp、php、jsp或cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。攻击者在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
命令: --os-shell
–os-shell的执行原理:其本质就是在站点目录下写入两个文件。
命令可被执行的前提条件:
①站点数据库必须拥有root权限/管理员权限。 查看管理员可使用 –-is-dba (是管理员显示true,不是则显示false) 或 –-user 命令
②攻击者需掌握站点的绝对路径
③PHP主动转义功能关闭,既魔术引号功能关闭。
④站点 secure_file_priv无限制
(一) 基于sqli-labs靶场示例
第一步:查看当前站点权限是否为管理员权限。
方式一:使用 –-is-dba命令
语法:sqlmap.py -u “URL” --is-dba
SQLmap使用指南(包含使用SQLmap获取shell)_第12张图片
方式二:使用 --users命令
SQLmap使用指南(包含使用SQLmap获取shell)_第13张图片
第二步:使用–os-shell命令获取站点的shell
语法:sqlmap.py -u “URL” –os-shell
SQLmap使用指南(包含使用SQLmap获取shell)_第14张图片
注意:上图红框中:web服务器支持哪种web应用语言? 表示目标站点是使用何种语言编写。因为使用sqli-labs靶场,因此站点使用的是PHP,选择4。
SQLmap使用指南(包含使用SQLmap获取shell)_第15张图片
接下来回答问询:您是否希望sqlmap进一步尝试激发完整的路径公开?选择:Y。
之后再选择:您想用什么作为可写目录? 选择 2
[1]公共位置 [2]自定义位置
[3]自定义目录列表文件 [4]强力搜索
填写文件路径:E:\phpstudy_pro\WWW\Test\sqli-labs-master\Less-2

第三步:获取shell之后,在E:\phpstudy_pro\WWW\Test\sqli-labs-master\Less-2目录下会生成两个文件:
文件1:tmpubpwk.php — 可以使攻击者输入的命令执行,并将执行结果返回sqlmap端。
文件2:tmpumjti.php — 可以使攻击者将文件上传到站点目录中
第四步:在os-shell>>后面执行想要的操作:如写入一句话木马、执行相应命令等等。
示例:os-shell>> echo “123” >> 1.txt 表示在E:\phpstudy_pro\WWW\Test\sqli-labs-master\Less-2 目录下生成一个1.txt文件,并且将 “123”写入1.txt文件中。
第五步:使用浏览器访问1.txt文件。 在浏览器中输入E:\phpstudy_pro\WWW\Test\sqli-labs-master\Less-2\1.txt

你可能感兴趣的:(#,sql,网络安全,web安全)