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

随着网络安全问题日益严峻,渗透测试成为了保护信息安全的重要手段。而在渗透测试的众多工具中,SQLmap凭借其强大的自动化SQL注入检测和利用能力,成为了网络安全专家必备的利器。那么,你知道如何高效地使用SQLmap进行漏洞扫描吗?

SQLmap作为一个开源的自动化渗透测试工具,能自动化检测和利用SQL注入漏洞,如何安装并高效运用它,才能更好地提升你的渗透测试能力呢?

随着互联网的快速发展,网络攻击的手段也在不断升级,SQL注入作为最常见的攻击方式之一,仍然是许多网站和应用面临的安全隐患。使用像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=student
www.magedu2.com/vuln2.asp?id=1
www.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的安装与使用,你能够快速定位SQL注入漏洞并有效进行安全防护。通过不断学习和实践,增强网络安全防护意识,为信息安全保驾护航。

“安全是最好的防护,掌握渗透测试工具,才是成为安全专家的第一步。”

 

 

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

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

相关文章

SpringBoot 整合 RabbitMQ 实现流量消峰

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还…

Git-分支(branch)常用命令

分支 我们在做项目开发的时候,无论是软件项目还是其他机械工程项目,我们为了提高效率以及合理的节省时间等等原因,现在都不再是线性进行,而是将一个项目抽离出诸进行线,每一条线在git中我们就叫做分支,bran…

goenv go 环境配置

Golang环境配置 1. goenv工具 goenv 是一个用于管理 Go 语言版本的工具,类似于 Python 的 pyenv 或 Ruby 的 rbenv。不过需要注意的是,goenv 并不是一个官方维护的工具,而是一个社区项目。Go 语言本身已经提供了很好的版本管理工具&#xf…

Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)

electron-builder.yml 配置 # 唯一的应用程序标识符,用于操作系统级别的识别 appId: com.electron.app# 应用程序的名称,显示在用户界面上 productName: 我的应用# 定义构建资源目录,放置图标、证书等资源文件 directories:buildResources: …

springboot425滑雪场管理系统(论文+源码)_kaic

摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定滑雪场管理系统的总体功能模块。然后,详…

好玩的汇编编译器NASM:一款基于x86架构的汇编与反汇编软件

好玩的汇编编译器NASM This is the project webpage for the Netwide Assembler (NASM), an asssembler for the x86 CPU architecture portable to nearly every modern platform, and with code generation for many platforms old and new. Netwide Assembler(…

前端面试准备问题2

1.防抖和节流分别是什么,应用场景 防抖:在事件被触发后,只有在指定的延迟时间内没有再次触发,才执行事件处理函数。 在我的理解中,简单的说就是在一个指定的时间内,仅触发一次,如果有多次重复触…

Java 的基本数据类型与包装类的区别

Java 提供了 8 种基本数据类型:byte、short、int、long、float、double、char 和 boolean。它们是直接存储值的,不是对象。 而包装类(如 Integer、Double 等)是将基本数据类型封装为对象,提供了更多方法支持&#xff…

RabbitMQ 基本使用方法详解

RabbitMQ 基本使用方法 在你的代码中,涉及到了 RabbitMQ 的基本使用,包括队列定义、交换机的配置、消息的发送与接收等内容。下面我将详细总结 RabbitMQ 的基本使用方法,重点解释如何在 Spring Boot 项目中与 RabbitMQ 集成。 1. 引入依赖 …

【AI知识】有监督学习分类任务之支持向量机

1.支持向量机概念 支持向量机(Support Vector Machine, SVM) 是一种有监督学习算法,主要用于分类任务(也可用于回归任务,即支持向量回归,SVR)。SVM的核心思想是找到一个最优的超平面&#xff0…

杭州乘云联合信通院发布《云计算智能化可观测性能力成熟度模型》

原文地址:杭州乘云联合中国信通院等单位正式发布《云计算智能化可观测性能力成熟度模型》标准 2024年12月3日,由全球数字经济大会组委会主办、中国信通院承办的 2024全球数字经济大会 云AI计算创新发展大会(2024 Cloud AI Compute Ignite&…

【经典】制造供应链四类策略(MTS、MTO、ATO、ETO)细说

关注作者 制造供应链的牛鞭问题与复杂问题主要是从两个方面解决,一是同步化供应链消减从需求到供应的放大效应,二是供应链细分,针对不同的客户、不同的需求供应的匹配策略来应对复杂性,更好的满足客户并以最低的总成本来实现。 对…

实时日志与发展:Elasticsearch 推出全新专用的 logsdb 索引模式

作者:来自 Elastic Mark Settle, George Kobar 及 Amena Siddiqi Elastic 最新发布的 logsdb 索引模式是专为日志管理优化的功能,旨在提升日志数据的存储效率、查询性能以及整体可用性。这个模式专注于满足现代日志处理需求,提供更高效的日志…

React Image Crop——在React应用中轻松实现图片裁剪功能

React Image Crop是一个用于在React应用程序中裁剪和调整图像的库。它提供了一个简单而强大的界面,允许用户选择和调整裁剪区域,并生成裁剪后的图像。 什么是React Image Crop? React Image Crop是一个开源的React组件,用于在浏览…

Vue.js 中,前端如何处理从后端返回的 Excel 文件流

目的:页面中点击按钮实现下载excel文件 步骤: 向后端发送请求: 使用 axios(或其他 HTTP 客户端)向后端发送请求以获取文件。通常,文件会以 Blob 形式返回。 处理响应数据: 将响应数据(Blob 对象)处理为下载链接,并模拟点击以触发下载。 具体步骤: 1. 安装 axios(…

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能,是通过获取手机设备,加速度传感器接口,获取其中的数值,进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…

微积分复习笔记 Calculus Volume 2 - 3.7 Improper Integrals

3.7 Improper Integrals - Calculus Volume 2 | OpenStax

box 提取

box 提取 import json import os import shutilimport cv2 import numpy as np import pypinyinclass Aaa():passdef pinyin(word):s for i in pypinyin.pinyin(word, stylepypinyin.NORMAL):s .join(i)return s if __name__ __main__:selfAaa()base_dirrE:\data\dao\20241…

ViewModel

ViewMode是MVVM架构模式中VM层对应的类,它的作用是存储界面数据,并和界面发生数据交互。ViewModel能感知生命周期,并且在界面由于配置问题发生重建时候,可以保持当前的数据不变。生命周期如下: ViewMode由ViewModePr…

ESP32-S3模组上跑通ES8388(29)

接前一篇文章:ESP32-S3模组上跑通ES8388(28) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析到了es8388_init函数中的第11段也是最后一段代码,没有解析完,本回继续解析。为了便于理解和回顾,再次贴出该片段,在components\audio_hal\driver\es8388\es8388.c中,如下…