BugkuCTF-MISC题FileStoragedat
知識(shí)點(diǎn)
FileStorage是微信存儲(chǔ)數(shù)據(jù)的一個(gè)文件夾,該文件夾下存放的是經(jīng)過加密后微信里發(fā)送、接受的圖片而形成的文件后綴為dat的文件。就是微信dat文件。想要做出此題,就得先弄懂微信dat文件形成的原因。
微信的dat文件,將微信圖片的各字節(jié)通過異或運(yùn)算后,保存為dat后綴名存儲(chǔ)方式。
解題流程
點(diǎn)擊下載后,
打開,一個(gè)名偽keli.dat的文件
首先我們用winhex等二進(jìn)制查看工具打開該圖片。圖片左邊的字節(jié)為17CE。
這個(gè)17CE是重點(diǎn),我們現(xiàn)在知道圖片經(jīng)過異或運(yùn)算后,得到的結(jié)果是17CE,那么我們這里使用常見的幾類圖片格式進(jìn)行逆推。
大概公式:文件頭 XOR 17CE = 兩個(gè)相同的字節(jié)。
下圖為常見的幾類圖片文件頭格式
后綴名 文件頭
JPG FF D8 FF
PNG 89 50 4E 47
BMP 42 4D
GIF 47 49 46 38
ZIP 50 4B 03 04
RAR 52 61 72 21
AVI 41 56 49 20
先以jpg圖片格式為例。打開計(jì)算器,并調(diào)制程序員模式,進(jìn)行異或運(yùn)算,輸入FFD8 XOR 17CE運(yùn)算后的結(jié)果是E816,先然,各字節(jié)和17CE進(jìn)行異或運(yùn)算,應(yīng)該相等才對(duì)。所以這張圖片并不是jpg格式。
我們以PNG文件頭格式為例。png文件頭為8950,dat文件頭為17CE。經(jīng)過異或運(yùn)算后,得到的結(jié)果是9E9E。說明原圖的各個(gè)字節(jié)同9E進(jìn)行異或運(yùn)算后得到的字節(jié)保存后,就是dat文件。
3. 已知dat文件所有字節(jié),已知異或運(yùn)算字節(jié)為9E,所以將這個(gè)dat文件的每個(gè)字節(jié)和9E進(jìn)行異或運(yùn)算后,就會(huì)得到一張PNG的圖片了。思路有了我們進(jìn)行復(fù)現(xiàn)。
三、復(fù)現(xiàn)
1、利用工具
一個(gè)大佬寫的工具:
https://github.com/PiaoZhenJia/WeChatDatFileDecoder
文件下載完畢后,進(jìn)入bin/debug/路徑。運(yùn)行WpfApp1.exe
手動(dòng)輸入要進(jìn)行解碼的dat文件路徑。手動(dòng)輸入文件解碼后的保存路徑。點(diǎn)擊開始轉(zhuǎn)換。
會(huì)得到一個(gè)png結(jié)尾的圖片,打開后為flag。
得到flag
方法二:
最好能通過腳本解碼dat
總結(jié)
以上是生活随笔為你收集整理的BugkuCTF-MISC题FileStoragedat的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 memcpy 和 strcpy
- 下一篇: React之组件与模块