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

news2024/12/24 3:48:15

文章标题

  • 一: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.py -u “URL” –dbs (注意:使用sqlmap.py -u “URL” –dbs命令会爆破出该服务器的所有数据库名,要精确到当前目标站点的数据库名可使用命令: sqlmap.py -u “URL” --current–db
在这里插入图片描述
第三步:查表名。 语法: sqlmap.py -u “URL” -D “数据库名” –talbes
在这里插入图片描述
第四步:查字段名。语法: sqlmap.py -u “URL” -D “数据库名” -T “表名” --columns
在这里插入图片描述
第五步:进行拖库。语法: sqlmap.py -u “URL” -D “数据库名” -T “表名” –columns -C “字段名1,字段名2”
在这里插入图片描述

(二)基于POST数据传输方式
(1)方式一:先使用BurpSuit抓包,保存抓取到的内容,将其存放在某个目录下。(如:C:\Users\Test\Desktop\Less-11.txt)
在这里插入图片描述
语法:sqlmap.py -r “文件路径”
注意:由于数据包请求头中有众多参数,若所有参数都进行扫描,相对而言任务量较大,耗时较长。因此,使用 -p 指定扫描参数。
语法:sqlmap.py -r “文件路径” -p “指定参数”
在这里插入图片描述
注意:查库名、表名、字段名、拖库步骤和上文GET方式一致,不再赘述。
(2)方式二:使用指定扫描参数。既使用BurpSuit抓包之后,将抓包内容存储到某个文件中,同时在需要扫描的参数后使用
在这里插入图片描述
语法:语法:sqlmap.py -r “文件路径”
在这里插入图片描述
(3)方式三:自动搜索表单方式
语法:sqlmap.py -u “URL” --forms
在这里插入图片描述
(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
在这里插入图片描述
方式二:使用 --users命令
在这里插入图片描述
第二步:使用–os-shell命令获取站点的shell
语法:sqlmap.py -u “URL” –os-shell
在这里插入图片描述
注意:上图红框中:web服务器支持哪种web应用语言? 表示目标站点是使用何种语言编写。因为使用sqli-labs靶场,因此站点使用的是PHP,选择4。
在这里插入图片描述
接下来回答问询:您是否希望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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构_进阶(2):二叉树的OJ练习题

目录 1. 二叉树创建字符串。OJ链接 2. 二叉树的分层遍历1。OJ链接 3. 二叉树的分层遍历2。OJ链接 4. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。OJ链接 5. 二叉树搜索树转换成排序双向链表。OJ链接 6. 根据一棵树的前序遍历与中序遍历构造二叉树。 OJ链接…

2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷4

第一题、计算 1+2+3+⋯+(n−1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。 输入格式 输入一个正整数 n。 输出格式 输出一个正整数,表示最后求和的答案。 输入输出样例 输入 #1 100 输出 #1 5050 第二…

手撕自定义类型:结构体,枚举,联合——【C语言】

在开始学习之前我们先来欣赏一下五岳之一华山的风景,来营造一个好心情,只有一个好心情我们才能更好的学习 目录 结构体 1 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的定义和初始化 1.6 …

Go语言之重要数组类型切片(slice)make,append函数

切片是一个动态数组,因为数组的长度是固定的,所以操作起来很不方便,比如一个names数组,我想增加一个学生姓名都没有办法,十分不灵活。所以在开发中数组并不常用,切片类型才是大量使用的。 切片基本操作 切片…

Linux系统文件编程及文件读、写操作

Linux 系统编程Day01 文章目录 Linux 系统编程Day011.文件编程概述1.1 文件的打开及创建1.1.1 参数说明1.1.2 文件写入操作示例1.1.3 文件的权限 2.文件操作2.1 写入文件2.2 文件读取操作2.3 文件的光标移动操作 3.文件操作原理简述3.1文件描述符3.2 Linux文件操作流程 1.文件编…

【数据结构】二叉树的前中后序遍历(C语言)

文章目录 什么是二叉树树相关的概念树的表示形式特殊的二叉树如何创造出一棵二叉树二叉树的遍历先序遍历(前序遍历)中序遍历后序遍历 总结 什么是二叉树 [二叉树] 顾名思义就是有两个分支节点的树,不仅如此,除了叶子外的所有节点都具有两个分支节点&…

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真 下面介绍单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真,常见于二级压降仿真,以下图为例

备战秋招 | 笔试强训5

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、在上下文和头文件均正常情况下,以下程序的输出结果是() int x 1; do {printf("%2d\n",x); }while(x--); A. 1 B. 无任何输出 C. 2 D. 陷入死循环 …

三种智能算法优化PID参数软件,MATLABAPP开发

今天的主题是:三种智能算法优化常见传递函数的PID参数,采用MATLAB APP Designer 开发。提供代码源程序,可以自行修改源代码(不是封装软件) 这个软件基本涵盖了所有的传递函数类型,传递函数的参数简单易改。…

【Java反射机制详解】—— 每天一点小知识

💧 J a v a 反射机制详解 \color{#FF1493}{Java反射机制详解} Java反射机制详解💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章…

pytest 参数化进阶

目录 前言: 语法 参数化误区 实践 简要回顾 前言: pytest是一个功能强大的Python测试框架,它提供了参数化功能,可以帮助简化测试用例的编写和管理。 语法 本文就赶紧聊一聊 pytest 的参数化是怎么玩的。 pytest.mark.par…

week27

这周是磨难的一周不知道NT装了多少次系统,删除了多少数据好消息是把BIOS和ubuntu安装地很熟练了,而且经过爱上了心仪的Ubuntu23.04,就是她了坏消息是一个学期做的笔记全都没了,以后不好回忆了,好消息是不用考试了&…

总结929

今日做了一篇阅读题,差点全军覆没,通过这篇阅读,主要说明了两大问题,一个是单词,背的还不够牢固,其二,语法功底还不够扎实。但说实话,在语法方面,还是下了一番功夫&#…

linux 内网批量快速传输大文件 nc

使用nc工具 传输内网宽带拉满先运行接收端 开始监听使用 ansible 拷贝脚本到其它接收端服务器批量运行接收端脚本查看nc是否运行运行发送端运行发送端脚本开始传输文件 传输内网宽带拉满 先运行接收端 开始监听 接收端脚本 re.sh #!/bin/bash #Revision: 1.0 #Author:…

动态规划(一) —— 从背包系列问题看DP

前言 动态规划可以算是算法初学者的噩梦哈哈,这段时间荔枝在持续学习Java后端的同时也没有忘记刷题嘿嘿嘿,总算把代码随想录上给出的有关动态规划的题目刷完了。接下来的几篇文章荔枝将会对于刷过的动态规划问题做出总结并给出相应的个人体会和理解。在本…

compose之沉浸式(侵入式)状态栏(隐藏状态栏)

沉浸式(侵入式)状态栏 效果图: 1、代码加入:WindowCompat.setDecorFitsSystemWindows(window, false) ComposeTestTheme {WindowCompat.setDecorFitsSystemWindows(window, false)Greeting("Android")} 2、沉浸式(侵入式)主题: …

消息推送(websocket)集群化解决方案

目录 需求分析解决方案实现步骤架构图配置websocket请求地址配置websocket连接前置和连接关闭监听配置websocket处理程序配置redis交换机配置redis订阅监听配置redis发布监听需求分析 及时信息传递:消息推送功能能够确保网站向用户发送及时的重要信息,包括新闻更新、促销活动…

消息队列——rabbitmq的不同工作模式

目录 Work queues 工作队列模式 Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式 工作模式总结 Work queues 工作队列模式 C1和C2属于竞争关系,一个消息只有一个消费者可以取到。 代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关…

Redis进阶底层原理-主从复制

Redis的主从节点都会记录对方的信息,核心还包括ReplicationID 和 offset , ReplicationID : 主从节点实例的ID ,redis内部就是通过这个id去识别主从节点。offset:数据同步偏移量,也就是从节点每次从主节点同…

3.6 Bootstrap 导航元素

文章目录 Bootstrap 导航元素表格导航或标签胶囊式的导航菜单基本的胶囊式导航菜单垂直的胶囊式导航菜单 两端对齐的导航禁用链接下拉菜单带有下拉菜单的标签带有下拉菜单的胶囊标签页与胶囊式标签页 Bootstrap 导航元素 本文将讲解 Bootstrap 提供的用于定义导航元素的一些选项…