【每天学会一个渗透测试工具】SQLmap安装教程及使用

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具

✨SQLmap简介

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

🚀下载及安装

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

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

kali默认自带sqlmap不需要安装

在这里插入图片描述

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

移动到python目录下

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

快捷方式名

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

🐱‍👤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.php
HTTP/1.1
Host:www.magedu.com
User-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文件夹下,可以通过这个参数进行修改

🎃实际利用(DVWA)

当给sqlmap一个url时,它会:

1.判断可注入的参数
2.判断可以使用哪种SQL注入技术来注入
3.识别出哪种数据库
4.根据用户选择,读取哪些数据

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

# 判断注入点,因系统需要登录所以要加cookie
python 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表中的字段

在这里插入图片描述

在这里插入图片描述

获取所有数据

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

springboot非物质文化遗产管理系统-计算机毕业设计源码16087

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

昇思25天学习打卡营第13天 | ShuffleNet图像分类

ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端,所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作:Pointw…

深入理解 LXC (Linux Containers)

目录 引言LXC 的定义LXC 的架构LXC 的工作原理LXC 的应用场景LXC 在 CentOS 上的常见命令实验场景模拟总结 1. 引言 在现代 IT 基础设施中,容器技术已经成为一种重要的应用和部署方式。与虚拟机相比,容器具有更高的效率、更轻量的特性和更快的启动速度…

科研绘图系列:R语言双侧条形图(bar Plot)

介绍 双侧条形图上的每个条形代表一个特定的细菌属,条形的高度表示该属的LDA得分的对数值,颜色用来区分不同的分类群或组别,它具有以下优点: 可视化差异:条形图可以直观地展示不同细菌属在得分上的差异。强调重要性:较高的条形表示某些特征在区分不同组别中具有重要作用。…

怎样在 PostgreSQL 中优化对 UUID 数据类型的索引和查询?

文章目录 一、UUID 数据类型概述二、UUID 索引和查询的性能问题三、优化方案(一)选择合适的索引类型(二)压缩 UUID(三)拆分 UUID(四)使用覆盖索引(五)优化查询…

【嵌入式DIY实例-ESP8266篇】-LCD ST7735显示BME280传感器数据

LCD ST7735显示BME280传感器数据 文章目录 LCD ST7735显示BME280传感器数据1、硬件准备与接线2、代码实现本文中将介绍如何使用 ESP8266 NodeMCU 板(ESP12-E 模块)和 BME280 气压、温度和湿度传感器构建气象站。 NodeMCU 微控制器 (ESP8266EX) 从 BME280 传感器读取温度、湿度…

spring tx @Transactional 详解 `Advisor`、`Target`、`ProxyFactory

在Spring中,Transactional注解的处理涉及到多个关键组件,包括Advisor、Target、ProxyFactory等。下面是详细的解析和代码示例,解释这些组件是如何协同工作的。 1. 关键组件介绍 1.1 Advisor Advisor是一个Spring AOP的概念,它包…

uni-app三部曲之一: Pinia使用

1.引言 最近在学习移动端的开发,使用uni-app前端应用框架,通过学习B站的视频以及找了一个开发模板,终于是有了一些心得体会。 B站视频1:Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2:01-课程和uni的…

FTP、http 、tcp

HTTP VS FTP HTTP :HyperText Transfer Protocol 超文本传输协议,是基于TCP协议 FTP: File Transfer Protocol 文件传输协议, 基于TCP协议, 基于UDP协议的FTP 叫做 TFTP HTTP 协议 通过一个SOCKET连接传输依次会话数…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意:B树中B不是代表二叉树(binary),而是代表平衡(balance),因为B树是从最早的平衡二叉树演化而来,但是B树不是一个二叉树。 B树的高度一般在2~…

LiveNVR监控流媒体Onvif/RTSP用户手册-录像计划:批量配置、单个配置、录像保存(天)、配置时间段录像

TOC 1、录像计划 支持单个通道 或是 通道范围内配置支持快速滑选支持录像时间段配置 1.1、录像存储位置如何配置? 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 支持 Windows Linux 及其它CPU架构(国产、嵌入式…)操作系统安装包下载 、 安装…

Java面试八股之MySQL主从复制机制简述

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案,用于在多个服务器之间同步数据。此机制允许从一个服务器(主服务器)到一个或多个其他服务器(从服务器)进行数据的复制,从而增强数据冗余、提…

idea创建dynamic web project

由于网课老师用的是eclipse,所以又得自己找教程了…… 解决方案: https://blog.csdn.net/Awt_FuDongLai/article/details/115523552

ppt接单渠道大公开‼️

PPT 接单主要分两种:PPT 模板投稿和PPT 定制接单,我们先从简单的 PPT 模板投稿说起。 PPT 模板投稿 利用业余时间,做一些 PPT 模板上传到平台,只要有人下载你的模板,你就有收入。如果模板质量高,简直就是一…

当CNN遇上Mamba,高性能与高效率通通拿下!

传统视觉模型在处理大规模或高分辨率图像时存在一定限制,为解决这个问题,研究者们就最近依旧火热的Mamba,提出了Mamba结合CNN的策略。 这种结合可以让Mamba在处理长序列数据时既能够捕捉到序列中的时间依赖关系,又能够利用CNN的局…

java入门

一、java入门 1.打开CMD CMD:在windows中,利用命令行的方式操作计算机,可以打开文件,打开文件夹,创建文件夹等等 (1)WinR (2)输入CMD (3)按下…

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度:衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规,而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

3101.力扣每日一题7/6 Java(接近100%解法)

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 主要是基于对…

【电路笔记】-C类放大器

C类放大器 文章目录 C类放大器1、概述2、C类放大介绍3、C类放大器的功能4、C 类放大器的效率5、C类放大器的应用:倍频器6、总结1、概述 尽管存在差异,但我们在之前有关 A 类、B 类和 AB 类放大器的文章中已经看到,这三类放大器是线性或部分线性的,因为它们在放大过程中再现…

2017年,我成为了技术博主

2017年9月,我已经大三了。 >>上一篇(爪哇,我初窥门径) 我大二学了很多java技术,看似我一会就把javaweb/ssh/ssm这些技术栈给学了。 这些技术确实不难,即便是我,我都能学会,…