1. 程式人生 > >IDF實驗室-抓到一隻蒼蠅

IDF實驗室-抓到一隻蒼蠅

感覺這道題對我已經有難度了

一、原題

報告首長!發現一隻蒼蠅。。

在哪?

here!

臥槽?!好大一坨蒼蠅。。

提取碼:oe6w

PS:flag寫錯了,太麻煩也懶得改了,格式還是wctf{…},大家明白就好,不要在意這些細節。。

二、writeup

首先下載所給的檔案misc_fly.pcapng,是一個抓包軟體抓取的資料包,解題流程如下:

1.用wireshark分析資料包

開啟資料包,發現是一堆TCP的包,先不理會底層的資料,只關心應用層。
應用層的協議只有HTTP,過濾出HTTP的包進一步分析:

這裡寫圖片描述

這裡寫圖片描述

POST了一段這樣的JSON:

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

目標url為:

http://set2.mail.qq.com/cgi-bin/uploadunite?func=CreateFile&&inputf=json&outputf=json&&sid=x5O8ZuWvSp9yXFgM

這應該是一個上傳檔案的操作,檔名為fly.rar

,檔案大小為525701
進一步分析以驗證猜想,過濾出全部的POST資料包:

http.request.method == "POST"

這裡寫圖片描述

其中倒數第二個包的內容是:

這裡寫圖片描述

至此已經可以確定:

資料包的內容:一封帶附件的郵件
發件人:81101652@qq.com
收件人:[email protected].net
附件:fly.rar
附件大小:525701 Bytes

接下來尋找附件資料在哪裡。

2.尋找附件資料

這裡寫圖片描述
第一個請求向伺服器POST附件資訊,緊接著就應該是上傳,結合資料包推斷第2~6個,共5個數據包應為附件資料。

5個數據包中的Media Type域

的大小各為

131436
131436
131436
131436
1777

這裡寫圖片描述

合計527521,而前面附件資訊裡已知附件大小為525701,相差不多,多出來的部分應該是頭部的資訊之類。

3.還原附件資料

觀察5個包Media Type域的內容,前面很大一部分內容是相同的,那麼這一部分是通訊時所需的頭部的內容,不是附件本身的內容,通過計算將多餘的資料去除。

已知:
附件被分成5個部分
5個子部分合計大小為527521
附件原大小為525701
求:
每個子部分頭部多餘的資料

容易求出,頭部多餘的部分:

5275215257015=364Bytes

將5個數據包的Media Type域分別匯出為二進位制檔案:
這裡寫圖片描述
然後使用dd命令分別將其前364個位元組去除:

dd if=1 bs=1 skip=364 of=1.1
dd if=2 bs=1 skip=364 of=2.1
dd if=3 bs=1 skip=364 of=3.1
dd if=4 bs=1 skip=364 of=4.1
dd if=5 bs=1 skip=364 of=5.1

之後合併檔案:

cat  1.1  2.1  3.1  4.1  5.1  >  fly.rar

校驗md5值:

md5sum fly.rar

結果:

e023afa4f6579db5becda8fe7861c2d3

而第一步中得到的資料包中POST資料為:

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

二者一致。同理再校驗sha值,同樣一致。
至此,由網路包還原出了附件資料fly.rar

這裡寫圖片描述

4.處理附件資料

本以為到這裡已經大功告成,解壓fly.rar即可。
結果還有後招……竟然解壓失敗……
分析原因,
fly.rar檔案通過了md5和sha校驗,肯定是沒問題的,自己的思路到這裡斷了,怎麼想也沒結果。
無奈搜答案,得出結果——偽加密。
即這是一個未加密過的rar檔案,但是卻將加密位置為了1,具體可參考
[rar檔案格式描述]
只需將檔案開頭處0x74位後面的0x84位置改為0x80即可

這裡寫圖片描述

修改後順利解壓,得到flag.txt

5.處理flag.txt

這回答案該有了吧,開啟flag.txt檢視,這又是一個二進位制檔案。
無語。
繼續二進位制開啟。
發現這是個win32的程式,Linux跑不了,轉到windows檢視
是個滿螢幕跑蒼蠅的程式……還挺逼真的……
還是二進位制開啟分析。
檔案內搜PNGRarJFIF,檔案尾有一個PNG,提取出來,是個二維碼:

這裡寫圖片描述

掃之,得到結果
flag{m1Sc_oxO2_Fly}

三、flag

wctf{m1Sc_oxO2_Fly}

四、知識點

這題夠繞的……
雖然參考了部分答案,但做完感覺很好。

相關推薦

IDF實驗室-蒼蠅

感覺這道題對我已經有難度了 一、原題 報告首長!發現一隻蒼蠅。。 在哪? here! 臥槽?!好大一坨蒼蠅。。 提取碼:oe6w PS:flag寫錯了,太麻煩也懶得改了,格式還是wctf{…},大家明白就好,不要在意這些細節。。

bugku——抓住蒼蠅

今天做了bugku的這道題,這才是九曲山路十八彎啊,自己解崩潰了,看了大佬的題解才做出來。 這裡記錄一下。 下載下來pcang檔案使用wireshark開啟 在分組位元組流中搜索一下flag{沒什麼東西,在搜一下flag. 發現了flag.txt  檔案->

小蜜蜂(hdoj 2044,動態規劃遞推)

Problem Description 有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。 其中,蜂房的結構如下所示。 Input 輸入資料的第一行是一個整數N,表示測試例項的個數,然後是N 行資料,每行包含兩個整

【讀後感】殺死知更鳥--哈珀 李

故事開頭,就交代了一堆背景,渲染了一種存在已久的種族關係和種族特性,而人們好像就受著這種“背景”的桎梏,總是帶著有色眼鏡看人。背景、做禮拜、聖誕節等等這些都是一種存在已久的儀式,還有就是對白人對黑人的偏見,同樣存在著。 幾個戲劇性的事件: 偷偷摸到怪人拉德利的房子; 阿迪克斯為黑

下載貓的圖片(其中500和600可以替換成其他的數字)

import urllib.requestreponse = urllib.request.urlopen('http://placekitten.com/g/500/600')cat_img = reponse.read()with open('E:\圖片\cat_500_600.jpg','wb') as

HDU2044 小蜜蜂...【基礎DP】

一隻小蜜蜂... Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 97776 &nb

HDOJ_2044_大二寫_小蜜蜂...

AC程式碼: //2044 #include <iostream> #include <cstdio> using namespace std; int main(void) { freopen("in.txt","r",stdin); int N; s

程式設計菜鳥對程式設計的思考

引言 程式設計,是一門實踐科學,意味著你學習程式設計的最好方式就是上手敲程式碼,但這意味著我們能因此輕視理論的學習嗎? 入門程式設計 上各大交流社群,提問該如何入門程式設計,五花八門的答案蜂擁而來。 但是總結一下,莫不就是一下幾種:     

李雪瑩和魏子迪合作畫了兔子

簡單少女心 import turtle turtle.speed(1) turtle.screensize(600,800,'red'and 'pink') turtle.color('yellow') turtle.pensize(10) turtle.circle(100) turtle.up()

15個猴子圍城圈選大王,依次1-7迴圈報數,報到7的猴子會被淘汰,直到最後猴子成為大王,問:哪猴子會最終成為大王!

  方法1: public class Monkey {    public static void main(String[] args) {        // TODO Auto-generated

退役狗最後的想法

  退役了這麼久了,一直想寫一篇部落格寫一寫退役了之後才明白的一些東西。今天填一下坑吧……   以下皆為我一家之言,肯定不會適合每一個人,但都是本人真心想說的。   比賽:     1、如果你考試前很多舉動與以往不同,比如說特別的想所謂攢人品,說明你應該是十分緊張或者十分不自信,儘快意識到儘快調整。

蝦和cmake的初次相遇

用於Ubuntu下用gedit寫程式碼,不使用IDE 原始思路 用gedit編輯好程式碼 g++編譯 執行 例項 新建HelloWorld.cpp檔案,鍵入下面簡單的程式碼片 #include <iostrea

如何用純 CSS 創作徘徊的果凍怪獸

效果預覽 線上演示 按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。 https://codepen.io/comehope/pen/VdOKQG 可互動視訊 此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。 請用 chrome, safari, edg

根據猿前輩的TPLINK和海康威視漏掃工具改進的IPscanner成果展示(20170314 更新)

    年底事比較多,但還是抽出時間學習研究了一下一隻猿前輩的TPLINK和海康威視漏掃工具,並做了改進(增加IP->區域資訊顯示,根據關鍵字分類、過濾資訊,HIK的ddns和camname資訊蒐集,IPCam的批量登入顯示畫面等)。多執行緒掃IP總是卡

小蜜蜂... HDU - 2044

有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。  其中,蜂房的結構如下所示。  Input 輸入資料的第一行是一個整數N,表示測試例項的個數,然後是N 行資料,每行包含兩個整數a和b(0<a<b&l

青蛙次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 /* 思路:遞迴,斐波那契數列 最後一步只能跳1級或兩級, 若跳1級則最後一步之前走了number-1級, 若跳2級則最後一步之前走了number-2級, 所以有

如何用純 CSS 和 D3 創作扭動的蠕蟲

效果預覽 線上演示 按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。 https://codepen.io/comehope/pen/QBQJMg 可互動視訊 此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。 請用 chrome, safari, edge 開啟

萌新OIer的自我介紹

看有很多人的blog首頁都有一些介紹,於是我也想寫一篇>_<. 本人是一個在ZJ的初二學生,一隻比較菜的萌新OIer. 習慣使用的語言為C++,小學用的是Pascal,現在已經忘光了. QQ 2153902322,手機號什麼的就不公開了,雖然公開了也沒人在意. 愛好不

如何用純 CSS 創作玉免

效果預覽 線上演示 按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。 https://codepen.io/comehope/pen/yqrNJm 可互動視訊 此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。 請用 chrome,

如何用純 CSS 創作憤怒小鳥中的綠豬

效果預覽 線上演示 按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。 https://codepen.io/comehope/pen/VBGWqX 可互動視訊 此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。 請用 chrome,