史上最详细sqlmap入门教程

news2024/11/25 23:38:35

最近做安全测试,遇到了SQL盲注的漏洞,从发现漏洞,确认漏洞,协助开发复现漏洞,验证漏洞一整套流程下来,有了亿点点收获,下面分享给大家,希望对软件测试同学有所启发,难度不大,小白看完也能上手的那种。

话不多说,先上图!!!

一、sqlmap工具简介

sqlmap 是一个自动化的 SQL 注入和渗透测试工具,是开源免费的, 支持 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase 和 SAP MaxDB 等数据库管理系统, 可以帮助渗透测试人员自动化地检测和利用 SQL 注入漏洞,获取数据库服务器上的数据,甚至可以在某些情况下获取操作系统的shell。

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

基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

基于报错注入,即页面会返回错误信息,或者把注入语句的结果直接返回在页面中;

联合查询注入,可以使用 union 情况下的注入;

堆查询注入,可以同时执行多条语句执行时的注入。

二、sqlmap工具安装

1、安装Python

此次演示的Python版本是Python 3.6.6

2、在官网:sqlmap: automatic SQL injection and database takeover tool,下载sqlmap安装包,选择任意一种格式均可

3、解压sqlmap,并将解压的文件复制到Python安装路径下

演示的Python安装目录在:D:\Python36

4、在桌面创建一个cmd的快捷方式,并命名为sqlmap

5、在快捷方式sqlmap上鼠标右键,选择“属性”,把起始位置修改为sqlmap所在路径后,点击“确定”按钮

6、双击快捷方式sqlmap,并输入:sqlmap.py -h

这样,sqlmap就安装成功了。

三、sqlmap参数讲解

1、-u "URL"

指定URL,一般用于get请求

用法:python sqlmap.py -u "接口地址"

例如:python sqlmap.py -u "https://xxxx/saler/list?customerId=2"

2、-r

sqlmap可以从一个文本中读取原始的 HTTP 请求,通过这种方式,能够免于设置部分选项(例如:设置 Cookies,POST 数据等参数)

例如:python sqlmap.py -r D:\user.txt --dbs

如果相关的请求是 HTTPS,可以结合 --force-ssl 开关强制使用 SSL 进行 443/tcp 连接。或者,在 Host 头部信息后面直接加上 :443,使用 Google dork 结果作为目标地址

3、--dbs

如果当前会话用户对数据库系统表有读取权限,则可以枚举出当前数据库名称

例如:python sqlmap.py -r D:\user.txt --dbs

4、--exclude-sysdbs

排除所有的系统数据库

例如:python sqlmap.py -r D:\user.txt --dbs --exclude-sysdbs "information_schema,mysql,performance_schema"

5、--tables

如果当前会话用户对数据库系统表有读取权限,则可以枚举出当前数据库表

例如:python sqlmap.py -r D:\user.txt --tables

6、-D

用来指定数据库,如果不加该参数, sqlmap 将枚举所有 DBMS 数据库的表

例如:python sqlmap.py -r D:\user.txt -D test --tables

7、--columns

如果当前会话用户对数据库系统表有读取权限,则可以枚举出当前数据库表的列名

例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name

8、-D

用来指定数据库名称

例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name

9、-T

用来指定数据库表名

例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name

10、-C

用来指定要枚举的数据库表的列名称

例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name

11、--fresh-queries

使用这个参数sqlmap将不会从缓存里面加载数据,从而能将最新的数据注入到数据库

例如:python sqlmap.py -r D:\user.txt --dbs --fresh-queries

12、--level

如果 SQL 注入检测的难度越高,则需要设定越高的--level 值,最高级别是5

例如:python sqlmap.py -r D:\user.txt --level=5 --risk=3

13、--risk

风险级别,默认级别是1,风险级别是2时,会在默认的基础上添加大量的时间型盲注语句进行测试,风险级别是3时,会在原基础上添加大量OR类型的布尔型盲注语句进行测试

例如:python sqlmap.py -r D:\user.txt --level=5 --risk=3

这个命令,执行时间会比较久

四、sqlmap实践应用

一)通过工具AppScan扫描SQL盲注漏洞

查看AppScan工具的扫描结果,看是否有SQL盲注漏洞,如果存在,就会有如下图所示的标注

二)分析存在SQL盲注的接口

注入的接口一般分为POST注入和GET注入,两种类型的接口使用工具的方式不一样。

1、POST注入

1)如果接口是POST类型的,就需要把AppScan上该接口的请求信息(请求头+请求体),全部复制到一个txt文件下保存,放到一个本地文件下,例如D:\saler.txt

2)手动登录系统,将D:\saler.txt文件的Cookie值更新为最新值

复制最新的Cookie值

粘贴至D:\saler.txt文件中

3)打开cmd窗口,通过桌面快捷方式进入sqlmap所在目录,执行命令:python sqlmap.py -r D:\user.txt --dbs

命令的格式为:python sqlmap.py -r 请求报文txt文件所在目录位置 --dbs

4)命令执行完成后,分析结果

如果有注入,结果如下(因为我们演示的时候,执行命令的参数是--dbs,所以暴露的是数据库名):

5)将SQL盲注的漏洞反馈给开发同学,让开发同学修复

参考AppScan扫描时的参数,利用抓包工具例如Fiddler或者Charles进行重现

尝试传这四个参数,验证结果是不是不同,如果不一样,则证明存在SQL盲注漏洞

6)待开发修复漏洞后,进行验证

注意验证的时候清除缓存,带--fresh-queries参数,该参数表示sqlmap将不会从缓存里面加载数据,从而能注入到数据库最新的数据

3分钟左右,脚本跑完后,查看结果,如下是已修复的结果

2、GET注入

1)打开cmd窗口,通过桌面快捷方式进入sqlmap所在目录,执行命令:python sqlmap.py -u "https://xxxx/saler/list?customerId=2" --dbs

命令的格式为:python sqlmap.py -u "接口地址" --dbs

2)命令执行完成后,分析结果

如果有注入,结果如下:

如果没有注入,结果如下:

3)将SQL盲注的漏洞反馈给开发同学,让开发同学修复

参考POST注入的方式,GET注入重现也可以不抓包,直接手动登录系统,在浏览器中访问接口地址即可

4)待开发修复漏洞后,进行验证

注意验证的时候清除缓存,带--fresh-queries参数,该参数表示sqlmap将不会从缓存里面加载数据,从而能注入到数据库最新的数据

请参考POST注入的方式

相信大家看完了整个SQL盲注测试流程,对SQL盲注也有了一定的了解,今天的分享就到这里,希望对大家有所启发。(全网同名,转载请注明出处)

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

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

相关文章

ChatGPT原理简介

承接上文GPT前2代版本简介 GPT3的基本思想 GPT2没有引起多大轰动,真正改变NLP格局的是第三代版本。 GPT3训练的数据包罗万象,上通天文下知地理,所以它会胡说八道,会说的贼离谱,比如让你穿越到唐代跟李白对诗,不在一…

JavaScript如何实现上拉加载,下拉刷新?

一、前言 下拉刷新和上拉加载这两种交互方式通常出现在移动端中。本质上等同于PC网页中的分页,只是交互形式不同。开源社区也有很多优秀的解决方案,如iscroll、better-scroll、pulltorefresh.js库等等。这些第三方库使用起来非常便捷。我们通过原生的方式…

(13)ADDA

AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号,ADC模拟-数字转换器 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换…

Spring MVC 框架

Spring MVC 框架 Spring MVC 简介Spring MVC 概述 Spring MVC入门案例案例步骤案例总结Bean 加载控制 请求与响应RequestMapping 设置请求路径请求参数五种类型参数传递普通参数POJO 数据类型嵌套POJO类型参数数组类型参数集合类型参数 JSON 数据传输参数日期类型参数传递响应 …

WPF MaterialDesign 初学项目实战(5):设计首页

原项目视频 WPF项目实战合集(2022终结版) 25P 其他内容 WPF MaterialDesign 初学项目实战(0):github 项目Demo运行 WPF MaterialDesign 初学项目实战(1)首页搭建 WPF MaterialDesign 初学项目实战(2)首页…

甲骨文云服务器 您无权访问任何应用程序?怎么办

背景 注册了甲骨文,登入是个难题,每次登入都这样显示 您无权访问任何应用程序 解决办法 因为我的服务器在于日本的大阪,每次登入链接即使采用书签的方法都会自动跳转到中国或者美国,所以是登入的连接错误了,我们需…

Mysql实现对某一字段排序并将排名写入另一字段

文章目录 前言一、数据库表结构和样例数据二、排名操作1.普通排名2.无间隔排名3.有间隔排名运行结果如图,我们可以看出此时的75已然变成了6,实现了跳跃: ![在这里插入图片描述](https://img-blog.csdnimg.cn/34f7c4db158945f1a709fc40d6f1843…

.Net C# 使用 EF Core

使用ORM框架可以加快开发速度,现在简单说下在.Net开发中使用微软官方提供的ORM框架 Entity Framework Core初始化数据库及数据表上手用法。 首先引入依赖项,通过Nuget服务添加如下3个包,因为当前使用的SQL Server数据库所以引入的是SQL Ser…

【Java算法题】剑指offer_01数据结构

前言 刷题链接: https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 1. 链表 JZ24 反转链表 思路:基本操作,如下所示。 /* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }…

【开源硬件篇】STM32F103C8T6核心板

STM32F103C8T6核心板 文章目录 STM32F103C8T6核心板一、STM32F103C8T6芯片1.1 STM32F103C8T6简介1.2 芯片引脚说明 二、去耦电路2.1 原理图设计2.2 原理分析2.2.1 结论2.2.2 去耦效果图2.2.3 放置距离问题2.2.3 放置位置问题 2.3 PCB设计示例 三、晶振电路3.1 原理图设计3.2 原…

(9)AT24C02存储器

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息 存储介质:E2P ROM通讯接口:I2C总线容量:256字节 I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线 …

linux(基础IO)下

目录: 1.追加实现重定向 2.dup2系统调用 3.程序替换是否会影响我们曾经打开的文件呢?? ---------------------------------------------------------------------------------------------------------------------------- 1.追加实现重定向…

Linux操作系统安全

账号的基本概念 用户: Linux中通过建立不同权限的用户,合理的控制和运用系统的资源,并且可以帮助用户构建自己的私人空间,更好的组织和管理自己的文件。 当创建一个用户时,系统会操作 /etc/passwd /etc/shadow 这两个文…

(10)DS18B20温度传感器

DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器(如热敏电阻),具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围:-55C 到 125C通信接…

希望计算机专业同学都知道这些博主

湖科大教书匠——计算机网络 “宝藏老师”、“干货满满”、“羡慕湖科大”…这些都是网友对这门网课的评价,可见网课质量之高!最全面的面试网站 湖南科技大学《计算机网络》微课堂是该校高军老师精心制作的视频课程,用简单的语言描述复杂的…

二十九、搜索与图论——克鲁斯卡尔算法(Kruskal 算法,稀疏图)

Kruskal算法主要内容 一、基本思路1、基本思想与概念2、算法步骤3、注意 二、Java、C语言模板实现三、例题题解 一、基本思路 1、基本思想与概念 解决问题: 多个城市中铺公路,使城市之间可以相互联通,问如何才能让铺设公路的长度最短——铺…

二十七、搜索与图论——Floyd 算法(多元路最短路径问题)

Floyd算法主要内容 一、基本思路1、算法原理2、基本思路3、注意 二、Java、C语言模板实现三、例题题解 一、基本思路 1、算法原理 遍历每条边,通过比较进行路径更新——暴力 解决多源最短路问题,求解 i 点到 j 点的最短距离 f [ i, j, k] 表示从 i 走…

REST服务,使用Dubbo还是SpringMVC

pringMVC、Dubbo 都支持 REST 服务,那当我们要开发一个 REST 服务接口时,该如何选择? 本文将包括以下两方面内容: REST服务的写法 REST服务的应用场景 REST服务的写法 首先我们看下 SpringMVC 怎么实现一个 REST 服务&#xff1…

盘点数据仓库建设需要知道的那些事

文章目录 建设规范为何要有规范规范如何落地有哪些规范 数仓分层分层原则常见分层主题域划分原则数据模型设计原则数据类型规范**数据冗余规范**表规范处理规范命名规范生命周期管理 指标管理指标定义指标构成指标分类命名规范 建设规范 为何要有规范 无规矩不成方圆&#xff…

vue项目百度ueditor编辑器集成135和秀米,主题图标美化

目录 前言效果预览教程1. 首先下载主题美化插件2. 接入135编辑器3. 接入秀米编辑器4. 组件封装5. main.js引入样式和js文件6. 页面使用 完成! 前言 本文介绍vue项目里引入百度Ueditor富文本编辑器,集成135编辑器和秀米编辑器,使内容编辑更加丰…