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 .\rogue_mysql_server.py 配置完后放着
開啟Navicat
連接我們偽造的惡意mysql服務器
然后就會讀取到需要的文件,在mysql.log中
確實讀取到了hosts文件,但是並不會讀取到第二個我需要讀取的文件1.txt。
因為只有客戶端請求一次后,才能讀取一個文件。原因是客戶端連接成功后只執行了select @@version_comment limit 1
來獲取詳細版本信息(Source Distribution ),一次查詢只能獲取一個文件,如果在客戶端執行兩次查詢就可以獲取后面兩個文件。呢么我們查詢下
確實讀取到了1.txt
終於算試驗成功了,不實驗根本體會不到這種感覺。
涉及到2019DDCTF中的mysql弱命令和國賽中的宇宙最簡單的sql