資料包分析-抓到一隻蒼蠅

eth258發表於2024-10-28

題目名稱:

資料包分析-抓到一隻蒼蠅

題目描述:

題目:報告首長!發現一隻蒼蠅。。 在哪? here! 臥槽?!好大一坨蒼蠅。。

感覺很有意思,所以寫了篇記錄

開局拿到資料包先看http協議的,題目描述說好大一隻fly,那就分組位元組流搜字串fly。發現有多個,那就先拿最先的幾個追蹤流看看,可以看到post請求了個JSON格式內容

{
    "path":"fly.rar",
	"appid":"",
    "size":525701,
 	"md5":"e023afa4f6579db5becda8fe7861c2d3",
 	"sha":"ecccba7aea1d482684374b22e2e7abad2ba86749",
 	"sha3":""
}

結合HTTP匯出物件的主機名來看,猜測這可能是郵箱檔案傳輸,傳輸了一個叫fly.rar的壓縮包,大小是525701。

image-20241028205449433

http傳輸檔案那必然是使用post方法,使用過濾http.request.method ==POST,結合上圖來看,他是經歷了一次郵件傳輸分別向set2.mail.qq.com傳送正文以及攜帶檔案資訊,sz.mail.ftn.qq.com傳送附件。為什麼這麼講呢?這是有推斷過程的

image-20241028214214649

可以發現163、289、431、577、729這5個連續的post包data大小各為131436、131436、131436、131436、1777,合計大小為527521,附件原大小為525701,這是十分接近的。那到底多出來什麼呢?拿去010來比較一下

image-20241028220819636

發現任意檔案之中都有一段相同的頭部,那就是通訊時候需要的頭部,並不是檔案本身的內容,但是從這裡並不能很好判別出來頭部結束在哪裡。

但是透過整理之前的資訊,原有資料包525701,5個合計資料包527521

(527521−525701)/5=364 即為頭部檔案大小

然後就是需要剔除加合併資料,使用linux的dd命令,這裡參考了這篇文章

合成檔案前先科普Linux/Unix語法:
 
語法:dd [選項] 
 
if =輸入檔案(或裝置名稱)。 
of =輸出檔案(或裝置名稱)。 
ibs = bytes 一次讀取bytes位元組,即讀入緩衝區的位元組數。 
skip = blocks 跳過讀入緩衝區開頭的ibs*blocks塊。 
obs = bytes 一次寫入bytes位元組,即寫入緩衝區的位元組數。 
bs = bytes 同時設定讀/寫緩衝區的位元組數(等於設定ibs和obs)

tee -a 輸出追加

按順序匯出data,這裡我分別命名為1.bin、2.bin ........

for i in {1..5}; do dd if=$i.bin bs=1 skip=364 2>/dev/null | tee -a fly.rar >/dev/null ; done

然後可以md5sum一下,檔案完整性一致

md5sum fly.rar
e023afa4f6579db5becda8fe7861c2d3  fly.rar

但是解壓會發現檔案頭出錯,rar修復無效,那就剩下偽加密的玩法了

找到第24個位元組,該位元組尾數為4表示加密,0表示無加密,將尾數改為0即可破解偽加密

84改為80,解壓出來一個txt,提示我們要執行此程式,順手拖到尾部看到明顯的IEND字樣。先改為exe執行出來是蒼蠅....,那就直接binwalk,foremost梭,foremost可以梭出來一堆圖片,有二維碼flag{m1Sc_oxO2_Fly}

相關文章