mysql协议中流程和go语言实现的恶意mysql服务器:https://blog.csdn.net/ls1120704214/article/details/88174003
poc :https://github.com/allyshka/Rogue-MySql-Server
简单的原理:http://aq.mk/index.php/archives/23/
今天实验了好久,直到最后一次才成功,之前的几次什么都读取不到,搞了一个下午,到现在,没午睡,好困呀,写完睡觉去,晚上起来还要肝概率论和攻防世界
使用的mysql客户端:Navicat
我直接在物理机上实现这个过程,如果想对比的更清楚,可以在自己的虚拟机上来实验,模拟linux的客户端来读取,一般服务器都是linux系统。
先把源码dump下来,然后修改py脚本中的port(随你,一般是3306),这里我修改成了3307,filelist是你想要读取的客户端文件,然后修改成想读取的
然后进入命令行, python2 . ogue_mysql_server.py 配置完后放着
开启Navicat
连接我们伪造的恶意mysql服务器
然后就会读取到需要的文件,在mysql.log中
确实读取到了hosts文件,但是并不会读取到第二个我需要读取的文件1.txt。
因为只有客户端请求一次后,才能读取一个文件。原因是客户端连接成功后只执行了select @@version_comment limit 1
来获取详细版本信息(Source Distribution ),一次查询只能获取一个文件,如果在客户端执行两次查询就可以获取后面两个文件。呢么我们查询下
确实读取到了1.txt
终于算试验成功了,不实验根本体会不到这种感觉。
涉及到2019DDCTF中的mysql弱命令和国赛中的宇宙最简单的sql