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

初探Mysql反向读取文件

前言

Mysql反向读取文件感觉蛮有意思的,进行了解过后,简单总结如下,希望能对在学习Mysql反向读取文件的师傅有些许帮助。

前置知识

在Mysql中存在这样一条语句

LOAD DATA INFILE

它的作用是读取某个文件中的内容并放置到要求的表中,具体的话又分为两种

1、load data infile "C:/Windows/win.ini" into table test FIELDS TERMINATED BY '\n';
2、load data local infile "C:/Windows/win.ini" into table test FIELDS TERMINATED BY '\n';

第一个语句是读取服务端本地的win.ini文件而后插入到test表中
第二个语句是读取客户端的win.ini文件而后插入到test表中
而这个也就是Mysql实现反向读取文件的关键点。

环境搭建

环境准备

客户端 Win11 192.168.134.1
服务端 Kali 192.168.134.132

这个还有一个先决条件,就是需要

服务端开启 Load data infile

师傅们可以通过如下语句来查询是否开启Load data infile

Kali自带Mysql服务,所以我们只需要开启一下就好,指令如下

service mysql start

在这里插入图片描述
接下来需要开启一下允许远程连接,因为默认的话是只允许本机连接mysql的,具体指令如下:

1、use mysql
//使用mysql数据库
2、GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION
//允许任意主机以root为密码登录,这里密码是我默认的密码,如果师傅们更改密码的话需要更改root为自己的密码
3、flush privileges
//刷新权限

此时环境就大致准备好了。

demo

刚刚已经在服务端开启过Mysql服务,接下来尝试本地连接(打开wireshark准备抓包),指令如下:

mysql -u root -p -h 192.168.134.132

在这里插入图片描述
成功连接,接下来利用刚刚学习的语句,来传一个文件:

load data local infile "C:/Windows/win.ini" into table test FIELDS TERMINATED BY '\n';
//加载客户端的win.ini文件到服务端的test表中

在这里插入图片描述
接下来看Wireshark。

流量分析

在这里插入图片描述
可以看到这里的话首先是一个Sever Greeting包。
在这里插入图片描述
返回了服务端的协议号、版本号和salt值等信息,接下来看第二个包。
在这里插入图片描述
这个应该是客户端的登录包,返回了用户名和登录密码的哈希值。

再往下看,
在这里插入图片描述
这个是登录包,接下来的就是正常的语句查询了。
在这里插入图片描述
然后就是查询语句的回显结果的包。
在这里插入图片描述
接下来分析一下读取文件的流量包,在Mysql命令行执行语句过后,得到流量包。
在这里插入图片描述
首先是客户端发送查询。
在这里插入图片描述服务端返回了需要的路径。
在这里插入图片描述这里可以看出来读取文件成功,同时可以看出文件是由客户端发送到服务端的,那么我们能不能控制这个文件,实现服务端恶意读取其他文件呢?我们先来分析一下正常流程。

1、客户端:将Win.ini文件插入到表test中
2、服务端:读取Win.ini文件内容
3、客户端:Win.ini内容为xxx

而我们想实现的流程是

1、客户端:我想查看当前数据库(任何指令皆可)
2、服务端:读取flag.php文件内容
3、客户端:flag.php内容为xxx

那么这个可不可行呢?其实是可行的。
那么这里想实现恶意的读取文件的话,其实我们可以伪造一个假的Mysql服务,当客户端请求连接时,我们运行连接,然后无论对方输入什么密码都可以连接,接下来向客户端发送读取文件要求,然后等客户端发送文件即可,具体过程如下所示:

1、服务端向客户端发送Greeting包
2、客户端向服务端发送请求以root身份登录
3、服务端运行客户端登录
4、客户端向服务端发送查询版本号等信息请求
5、服务端向客户端请求'C:\windows\system32\drivers\etc\hosts'文件内容
6、客户端向服务端发送该文件内容
7、服务端成功接收,向客户端返回响应包

在这里插入图片描述那么我们伪造的Mysql服务需要做些什么此时就显而易见了。

1、需要构造一个Greeting包发送给客户端
2、需要允许用户以任意密码登录,然后给予一个响应
3、需要构造一个TABULAR包发给客户端(将想要读取的文件名发给客户端)
4、接收文件内容后发送一个响应包

这里的话不对如何构造Gretting包和TABULAR包进行讲解,师傅们若想自己构造可以参考crow大师傅的这篇文章
https://cloud.tencent.com/developer/article/1856248
里面对如何构造进行了较为细致的讲解。
这里利用大佬写好的脚本来试一下,脚本链接如下
<https://github.com/allyshka/Rogue-MySql-
Server/blob/master/rogue_mysql_server.py>
首先需要修改一下脚本查看的文件,因为我们的客户机是Windows环境,而原脚本读取的是Linux环境下的文件,所以需要稍作修改
filelist修改为c:\windows\system32\drivers\etc\hosts
在这里插入图片描述
启动脚本
在这里插入图片描述
接下来用nmap查看端口是否开启

nmap -sS -p- 192.168.134.132 

在这里插入图片描述
可以看到端口已经开启,接下来就可以尝试用Navicat进行连接尝试(空密码即可,因为这本就是一个不存在的Mysql服务,只是一个恶意服务端)。
在这里插入图片描述
接下来就可以发现服务端的当前路径下多了一个mysql.log,文件,查看一下。
在这里插入图片描述
成功获取到文本内容,
接下来结合Wireshark分析一下流量看与我们设想是否一致。在这里插入图片描述
可以发现跟我们之前所想是相同的,接下来试一下Mysql命令行连接Mysql恶意服务,分析流量有什么不同。
在这里插入图片描述
可以看到过程其实都是一致的,不同点就在于Mysql命令行连接过恶意服务后请求的是查看版本号等信息,而Navicat请求的是set names utf 8mb4来获取指纹等信息。
在这里插入图片描述

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

相关文章:

初探Mysql反向读取文件

前言 Mysql反向读取文件感觉蛮有意思的&#xff0c;进行了解过后&#xff0c;简单总结如下&#xff0c;希望能对在学习Mysql反向读取文件的师傅有些许帮助。 前置知识 在Mysql中存在这样一条语句 LOAD DATA INFILE它的作用是读取某个文件中的内容并放置到要求的表中&#x…...

地图坐标系大全:常用地图坐标系详解与转换指南

介绍地图坐标系的基本概念和原理地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点&#xff0c;使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式&#xff0c;因此会有不同的坐标系参数&#xff0c;不同的坐…...

使用 URLSearchParams 解析和管理URL query参数

介绍 首先 URLSearchParams是一个构造函数&#xff0c;会生成一个URLSearchParams对象&#xff0c;参数类型&#xff1a; 不传 &#xff5c; string &#xff5c; object &#xff5c; URLSearchParams&#xff0c; 并且遇到特殊字符它会自动帮我们encode 和 decode const ur…...

一台电脑安装26个操作系统(windows,macos,linux,chromeOS,Android,静待HarmonyOS)

首先看看安装了哪些操作系统1-4: windows系统 四个5.Ubuntu6.deepin7.UOS家庭版8.fydeOS9.macOS10.银河麒麟11.红旗OS12.openSUSE Leap13.openAnolis14.openEuler(未安装桌面UI)15.中标麒麟&#xff08;NeoKylin&#xff09;16.centos17.debian Edu18.fedora19.oraclelinux(特别…...

Python配置文件管理之ini和yaml文件读取

1. 引言 当我们设计软件时&#xff0c;我们通常会花费大量精力来编写高质量的代码。但这往往还不够&#xff0c;一个好的软件还应该考虑其整个系统&#xff0c;如测试、部署、网络等。其中最重要的一个方面是配置管理。 良好的配置管理应允许在任何环境中执行软件而不更改代码…...

实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?

上一节课,我们做了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的DDD开发模式。今天&#xff0c;我们正式进入实战环节&#xff0c;看如何分别用这两种开发模式&#xff0c;设计实现一个钱包系统。话不多说&#xff0c;让我们正式…...

webpack当中的代码分割详解

A.代码分割方法一&#xff1a;将原来的单入口文件改为多入口文件 将不同的文件例如js代码文件分为入口文件和测试文件&#xff0c;这个时候打包出来的代码就会根据不同的文件单独打包成属于他们自己的文件 例如以下为单入口文件: entry: ./src/js/index.js 多入口文件:(在输出…...

【SSM】Spring对IoC的实现方式DI详讲

控制反转的一种实现方式——依赖注入一、IoC 控制反转&#xff08;Overview&#xff09;依赖注入&#xff08;DI&#xff09;- Overview利用 IoC&#xff08;控制反转&#xff09;这种思想有什么好处呢&#xff1f;二、依赖注入的方式setter 方式&#xff08;xml配置中的proper…...

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果视频演示5、代码练习-学习后拆解-实验步骤&#xff08;1&#xff09;头文件部分-"mwaveview.h"&#xff08;2&#xff09;cpp文件部分-"mwav…...

二维数组中的查找(两种解法,各有千秋)

凡事都有可能&#xff0c;永远别说永远。——《放牛班的春天》今天一题为再一个行列都有序的二维数组中寻找一个目标值&#xff0c;我们第一时间想到的可能是很暴力的解法&#xff0c;例如从头到尾进行遍历&#xff0c;这样能做出来&#xff0c;但是借用武忠祥老师的一句话&…...

quartz使用及原理解析

quartz简介 ​ Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;完全由Java开发&#xff0c;可以用来执行定时任务&#xff0c;类似于java.util.Timer。但是相较于Timer&#xff0c; Quartz增加了很多功能&#xff1a; 持久性作业 - 就是保持调度…...

Datawhale组队学习:大数据 D2——分布式文件系统(HDFS)

妙趣横生大数据 Day2三、Hadoop 分布式文件系统(HDFS)1. 分布式文件系统2. HDFS 简介3. HDFS 体系结构4. HDFS存储原理数据冗余存储数据存储策略数据错误与恢复5. HDFS数据读写过程读写过程HDFS故障类型和其检测方法HDFS编程实验1. 本地和集群文件间操作2. 基本文件操作3. Hado…...

CCIE重认证-300-401-拖图题全

拖图 拖图题 编程 snippet&#xff1b;192.168.5.0&#xff0c;mask 255.255.255.0&#xff1b;number是192.168.5.0&#xff1b;mask是255.255.255.0 snippets&#xff1b;edit-config对config&#xff0c;loopback对name 100&#xff0c;address对primary&#xff0c;mask…...

如何动态的创建类?type的其他用法?什么是元类,如何自定义元类?

1、python中一切都是对象&#xff0c;类也不例外&#xff0c;type是object的子类&#xff0c;是创建类的类。 如何动态的创建一个类&#xff1f; 用脚丫子创建 用脑子创建 不会 不知道什么事动态类 大家可能会有一堆的疑惑&#xff0c;是的我也是有很多疑惑那让我们一起来探个…...

XCP实战系列介绍15-XCP故障排查指导

本文框架 1.概述2. 通过调试器排查2.1 打开Det功能2.2 如何确定Det ErrorCode3. 通过XCP应答报文排查3.1 FE报文组成及故障码对应关系3.2 举个例子1.概述 前面几篇文章我们介绍了基于Davinci开发工具的XCP配置指导,配好了,代码也生成了,但是程序一定能正常跑起来吗?就算软…...

吉林大学软件需求分析与规范(Software Requirements Analysis Specification)

chapter0课程简介&#xff1a;◼ 软件工程专业核心课程之一◼ 软件工程课程体系最前端课程◼ 主要内容&#xff1a;需求的基本概念&#xff0c;需求的分类&#xff0c;需求工程的基本过程&#xff0c;需求获取的方法、步骤、技巧&#xff0c;需求分析和建模技术&#xff0c;需求…...

PyTorch - Conv2d 和 MaxPool2d

文章目录Conv2d计算Conv2d 函数解析代码示例MaxPool2d计算函数说明卷积过程动画Transposed convolution animationsTransposed convolution animations参考视频&#xff1a;土堆说 卷积计算 https://www.bilibili.com/video/BV1hE411t7RN 关于 torch.nn 和 torch.nn.function t…...

leetcode Day2(昨天实习有点bug,心态要崩了)

int carry 0;for(int i a.size() - 1, j b.size() - 1; i > 0 || j > 0 || carry; --i, --j) {int x i < 0 ? 0 : a[i] - 0;int y j < 0 ? 0 : b[j] - 0;int sum (x y carry) % 2;carry (x y carry) / 2;str.insert(0, 1, sum 0);}return str;加一&a…...

另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate

以下内容转载自&#xff1a;https://segmentfault.com/a/1190000018472572 作者&#xff1a;scherman 因为项目需要选择数据持久化框架&#xff0c;看了一下主要几个流行的和不流行的框架&#xff0c;对于复杂业务系统&#xff0c;最终的结论是&#xff0c;JOOQ是总体上最好的…...

LeetCode 338. 比特位计数

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> …...

排序评估指标——NDCG和MAP

在搜索和推荐任务中&#xff0c;系统常返回一个item列表。如何衡量这个返回的列表是否优秀呢&#xff1f; 例如&#xff0c;当我们检索【推荐排序】&#xff0c;网页返回了与推荐排序相关的链接列表。列表可能会是[A,B,C,G,D,E,F],也可能是[C,F,A,E,D]&#xff0c;现在问题来了…...

[Android Studio] Android Studio Virtual Device(AVD)虚拟机的功能试用

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f680;write…...

kafka-3-kafka应用的核心要点和内外网访问

kafka实战教程(python操作kafka)&#xff0c;kafka配置文件详解 Kafka内外网访问的设置 1 kafka简介 根据官网的介绍&#xff0c;ApacheKafka是一个分布式流媒体平台&#xff0c;它主要有3种功能&#xff1a; (1)发布和订阅消息流&#xff0c;这个功能类似于消息队列&#x…...

VS2017+OpenCV4.5.5 决策树-评估是否发放贷款

决策树是一种非参数的监督学习方法&#xff0c;主要用于分类和回归。 决策树结构 决策树在逻辑上以树的形式存在&#xff0c;包含根节点、内部结点和叶节点。 根节点&#xff1a;包含数据集中的所有数据的集合内部节点&#xff1a;每个内部节点为一个判断条件&#xff0c;并且…...

Prometheus 记录规则和警报规则

前提环境&#xff1a; Docker环境 涉及参考文档&#xff1a; Prometheus 录制规则Prometheus 警报规则 语法检查规则 promtool check rules /path/to/example.rules.yml一&#xff1a;录制规则语法 groups 语法&#xff1a; groups:[ - <rule_group> ]rule_group…...

(API)接口测试的关键技术

接口测试也就是API测试&#xff0c;从名字上可以知道是面向接口的测试活动。所以在讲API测试之前&#xff0c;我们应该说清楚接口是什么&#xff0c;那么接口就是有特定输入和特定输出的一套逻辑处理单元&#xff0c;而对于接口调用方来说&#xff0c;不用知道自身的内部实现逻…...

快速排序算法原理 Quicksort —— 图解(精讲) JAVA

快速排序是 Java 中 sort 函数主要的排序方法&#xff0c;所以今天要对快速排序法这种重要算法的详细原理进行分析。 思路&#xff1a;首先快速排序之所以高效一部分原因是利用了离散数学中的传递性。 例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧…...

linux环境搭建私有gitlab仓库

搭建之前&#xff0c;需要安装相应的依赖包&#xff0c;并且要启动sshd服务(1).安装policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]# sudo yum install -y curl policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]…...

SpringSecurity授权

文章目录工具类使用自定义失败处理代码配置跨域其他权限授权hasAnyAuthority自定义权限校验方法基于配置的权限控制工具类 import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class WebUtils {/*** 将字符串渲染到客户端** param response 渲…...

学习 Python 之 Pygame 开发坦克大战(一)

学习 Python 之 Pygame 开发坦克大战&#xff08;一&#xff09;Pygame什么是Pygame?初识pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音…...

设置网站建设/报个计算机培训班多少钱

1,在电路中没有任何功能&#xff0c;只是在PCB上为了调试方便或兼容设计等原因。 2,可以做跳线用&#xff0c;如果某段线路不用&#xff0c;直接不贴该电阻即可&#xff08;不影响外观&#xff09; 3,在匹配电路参数不确定的时候&#xff0c;以0欧姆代替&#xff0c;实际调试…...

广州营销型网站建设公司哪家名气大/制作网站

需求说明&#xff1a; /* *需求说明: *获取元素&#xff1a;tBodies,tHead,tFoot,rows,cells *表格的创建 *数据添加 *隔行变色 *删除操作&#xff0c;剩余表格重新计算&#xff0c;实现隔行变色*/HTML: <table id"table1"><tbody><tr><th>编…...

wordpress炫酷背景图片/怎么样关键词优化

作为开源中国点赞狂魔&#xff0c;必须有特殊的点赞技巧&#xff1a;账号登录OSC&#xff0c;并获取首页右侧第一个动弹的属性后点击"赞"&#xff0c;如果第一个用户被点击过则不会重复点击配合定时任务效果更佳//点赞狂魔class LikeDemon{public function index(){$…...

电脑课做网站的作业/怎么创建一个网站

1426: 收集邮票 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 261 Solved: 209[Submit][Status][Discuss]Description 有n种不同的邮票&#xff0c;皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买&#xff0c;每次只能买一张&#xff0c;并且买到的邮票究…...

做网站新闻编辑/百度推广网站一年多少钱

大家好&#xff0c;基于Python的数据科学实践课程又到来了&#xff0c;大家尽情学习吧。本期内容主要由程茜与政委联合推出。函数1函数的基本使用函数还记得吗&#xff1f;中学的时候学过Yf(X)&#xff0c;给定一个X&#xff0c;就有唯一的Y可以求出来。比如&#xff1a;y4x1&a…...

做网站i3够用吗/项目网站

原理&#xff1a;在数据中加入几个校验码,并把数据的每一个二进制位分配在几个奇偶校验组中.设:校验位的个数为r,能表示2^r个信息,1个表示“没错误”, 2^r -1个指出错误发生在哪一位. k 2^r –1-r个信息可用于纠正数据位. 2^r≥kr1 若要检测并纠正一位错,同时发现两位错,r,k应满…...