CTF杂项之总结(一)
最近準備CTF比賽,刷題有感,故作總結。
題1:
打開壓縮包,得到名為key的exe文件。第一猜想可能是小程序逆向,所以嘗試打開運行。系統提示:無法打開的可執行文件。
好的,右鍵選擇屬性,查看是否有貓膩。沒有任何信息。
右鍵選擇010或者notepad++打開。得到如下信息:看到文件頭的關鍵信息——
data:image/jpg;base64
這是jpg圖片base64隱寫的關鍵字。在網售搜尋圖片base64轉碼工具,轉碼得到原圖片。是一張二維碼。掃碼得到flag。
總結:
1.拿到題目時,應當首先查看是否可以打開、查看屬性欄是否有隱藏信息、查看文件類型。以上三方面的信息可以大致確定題目的考點。
2.對文件頭要保持一定的敏感度,常見文件頭如下:
如果無法從文件頭確定文件類型的話,對解題將是一大阻礙(比如此題如果不知道圖片的base64隱寫的話,便不知道考題的考察方向了。)同時,暫時沒有找到離線解析圖片base64隱寫的工具。
題2:
打開壓縮包,得到一張圖片和一個名為music的壓縮包。
圖片打開如下:
壓縮包打開如下:
壓縮包中的音頻文件解壓需要密碼。考慮,密碼藏于這張圖片之中。
圖面中最大的特征就是圖片下方的黑灰小點。必定是需要將其解碼。根據盲文對照表將其解碼得到密碼為kmdonowg。將音頻文件解壓。打開試聽,得到“滴滴滴”的摩斯密碼。
如果純人工聽取可能會有偏差。故使用音頻分析文件打開:
粗條紋為(-),細條紋為(.),大間隔為每個莫斯碼的分格。人工將其轉碼得到如下莫斯密碼:
-.-. - …-. .-- .–. . … ----- —… --… …-- …— …–… …— …-- -… --…
在kali中,采用py腳本將其轉碼為字符串
c t f w p e i 0 8 7 3 2 2 3 d z
代碼(python2.7可用)如下:
#!/usr/bin/pythonimport pprint import rechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" codes = """.- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --.. .---- ..--- ...-- ....- ..... -.... --... ---.. ----. -----"""dd = dict(zip(chars.lower(),codes.split())) DD = dict(zip(codes.split(),chars.lower()))#pprint.pprint(DD)def chars2morse(char):return dd.get(char.lower(),' ')def morse2chars(morse):return DD.get(morse,' ')while True:str = raw_input()x = str.split(' ')ccc = ''.join(x)if re.match('^[0-9a-zA-Z]+$',ccc):print ' '.join(chars2morse(c) for c in ccc)else:cc = str.split()print ' '.join(morse2chars(c) for c in cc)總結:
最初拿到題目時,我還以為黑灰密文為三行8列的01代碼。后來才想到海倫凱勒是一位盲人。所以這個密文是盲文。
在此附上盲文對照表:
實際上,所謂雜項的腦洞在于挖掘題目給出的信息。而這些信息往往出現在意想不到的地方。有些明顯有些隱晦。
題3:
打開壓縮包,只有一個名為flag的jpg文件
一如往常,右鍵查看屬性,010查看文件頭。
并沒有什么異常。
嘗試kali下binwalk分析。分析得到,這個圖片文件還藏著一張圖。dd命令分離得到——
接下來便無疾而終……
是的,沒有任何的信息。兩張圖表示的內容是一樣的。同時使用圖片分析工具stegsolve查看各類通道也沒有任何信息。
經過大佬提示——這是三明治,兩片面包夾肉,找到肉就找到flag。
好的,010打開二進制代碼,查詢jpg文件頭FFD8FF,得到兩個結果,在第二個文件頭前有一串可疑的字符串——
MZWGCZ33GZTDCNZZG5SDIMBYGBRDEOLCGY2GIYJVHA4TONZYGA2DMM3FGMYH2
觀察應該是base加密。嘗試base64解碼,無果。嘗試base32解碼,得到flag。
總結:
1.如上題一樣。要深入挖掘圖片給出的信息。當沒有提示的時候,圖片隱藏的含義就是提示。
2.dd命令相關知識拓展
dd:用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換。
注意:指定數字的地方若以下列字符結尾,則乘以相應的數字:b=512;c=1;k=1024;w=2
參數注釋:
if=文件名:輸入文件名,缺省為標準輸入。即指定源文件。< if=input file >
of=文件名:輸出文件名,缺省為標準輸出。即指定目的文件。< of=output file >
ibs=bytes:一次讀入bytes個字節,即指定一個塊大小為bytes個字節。
obs=bytes:一次輸出bytes個字節,即指定一個塊大小為bytes個字節。
bs=bytes:同時設置讀入/輸出的塊大小為bytes個字節。
cbs=bytes:一次轉換bytes個字節,即指定轉換緩沖區大小。
skip=blocks:從輸入文件開頭跳過blocks個塊后再開始復制。
seek=blocks:從輸出文件開頭跳過blocks個塊后再開始復制。
注意:通常只用當輸出文件是磁盤或磁帶時才有效,即備份到磁盤或磁帶時才有效。
count=blocks:僅拷貝blocks個塊,塊大小等于ibs指定的字節數。
conv=conversion:用指定的參數轉換文件。
ascii:轉換ebcdic為ascii
ebcdic:轉換ascii為ebcdic
ibm:轉換ascii為alternate ebcdic
block:把每一行轉換為長度為cbs,不足部分用空格填充
unblock:使每一行的長度都為cbs,不足部分用空格填充
lcase:把大寫字符轉換為小寫字符
ucase:把小寫字符轉換為大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:將每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。
題4
打開題目,得到兩個壓縮包。其中一個壓縮包,解壓得到名為misc2的jpg圖片,是愛因斯坦照片:另一個壓縮包打開,是名為flag的txt文件,需密碼才能進解壓。
那么,密碼應該藏在圖片之中。右鍵屬性查看,照片備注中出現一行詭異的信息——
嘗試將其作為密碼,解壓flag.txt。
解壓成功。
總結:
實際上我在解題時并沒有上述那么順利。我跳過了查看屬性這一步驟,直接查看010代碼。由于信息繁雜,并沒有找到password的信息。還通過stagsolve查看各個通道等操作。
這真的提示我們需要按照步驟,從簡到繁,層層排查,才能找到信息。
題5
打開壓縮包,是一個未知格式的文件。文件名為What kind of document is this_
所以出題人是想考察文件格式。讓我們猜測這個文件到底是什么文件。
用010打開,查看文件頭:這里再次貼上常見文件頭列表:
文件頭D0CF11E0,所以這是一個MS Word/Excel文件。修改后綴為.doc。打開提示需要密碼。
由于題目只有一個文件,即What kind of document is this_
所以猜測沒有密碼提示,嘗試暴力破解。使用office暴力破解軟件PassFab for Office,破解無果。
大佬給出提示:文件頭D0CF11E0實際對應的文件是MS Office文件,而MS Office文件包括MS Word/Excel/PPT。而office暴力破解軟件需要在文件格式正確時才能夠正確爆破密碼。
所以依次嘗試Excel/PPT,發現ppt才是正確的文件格式。爆破密碼得到——9919
打開ppt,發現一共8張幻燈片,第一張幻燈片存有一張圖片:另外7張沒有加入信息。嘗試將圖片導出另存,然后分析……
但是并沒有結果。
隨后,觀察其他ppt,發現一張空白ppt與其他ppt有所不同——
只有副標題文本框。嘗試找到主標題文本框,發現——至此解題完畢。
總結
1.文件頭D0CF11E0實際對應的文件是MS Office文件,而MS Office文件包括MS Word/Excel/PPT。而office暴力破解軟件需要在文件格式正確時才能夠正確爆破密碼。
2.遇到文件中文件時——如本題ppt中存在信息。也應當按照從簡到繁的步驟去分析——先查看每張幻燈片中的狀態,查找對比文本框及文本信息,再分析圖片等信息。
總結
以上題目多多少少都與圖片有關,總結一下解題步驟:
原則:從簡到繁——
查看屬性信息;
查看010二進制文件信息——文件頭,文件尾
若存在密文,且藏于圖片,思索圖片是否表達了某些含義。含義即為提示。
若不存在密文文件,則需要考慮是否通過爆破來解決了。
一層一層剝開謎題,每層的思路都要堅持從簡到繁的原則,不然,很可能會錯過很多關鍵信息。
意會圖片含義也相當重要。
總結
以上是生活随笔為你收集整理的CTF杂项之总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三分钟告诉你软件测试工程师到底是不是程序
- 下一篇: 西安80投影坐标系转WGS84地理坐标系