ctfshow 吃瓜杯八月賽 Misc WriteUp
1、Misc遊戲簽到
別問 問就是玩遊戲 套神說的) :多選殺戮 沒有殺戮就選背刺 少選能量瓶子 嚇死就對了^q^
打了小几十把 臉黑沒辦法 期間遇到過環境卡死 3段flag閃退 環境罷工(
八神說 是python的錯跟套神沒關係嗚嗚嗚
ctfshow{White_give_game_only_waste_your_timehahaha}
2、吃瓜
下載附件得到新建資料夾.jpg 010editor打開發現pk頭 說明為zip壓縮包
修改後綴為.zip後解壓開啟 得到
文字文件裡面的內容複製到瀏覽器開啟 為一個二維碼hhhh
掃描得到一串字元 一眼看出是打亂的flag
吃瓜圖片中 屬性發現花朵加密 密碼為sunny
然後 然後 我死在這個兩個西瓜了,,,瘋狂的想 兩個西瓜是不是兩個圖片 跟吃瓜本身圖片去進行一系列操作,,那天晚上思路被固定死了 (Tao:你想多了 而且是想太多了)
做夢夢到做出來了 早晨爬起來突然想起柵欄密碼,,好嘛 兩個西瓜就是柵欄2 將打亂的flag柵欄2解密 得到flag:
ctfshow{ch1_9ua_bei_kuai_1e}
3、EZbingo
手擼的 不懂原理 玩 就硬玩
ctfshow{yOu_w1N_tHE_BING0_G4me!}
4、魔王
後面群主加的簽到題 下載得到w3x字尾檔案 百度為魔獸爭霸3的地圖
開啟 提示為打敗大魔王得到flag em真給他打死了給了個假的flag(優美中國話
聯想到一題 超級瑪麗 於是用地圖編輯器開啟 尋找觸發事件編輯器
預期解:在遊戲中按下回車 輸入-ctfshow(其實相當於自定義了一個金手指作弊碼
ctfshow{ctfshow_chi_gua_bei_flag}
5、Dinner of Cyanogen
動態附件 下載解壓得到兩個doc檔案 letter開啟:得到第一段flag
another開啟報錯 兩者010editor開啟 發現均可為壓縮包(第一次發現這種神奇的檔案 )修改後綴為zip 發現another為加密壓縮包 密碼未知
觀察最後一個檔案 聯想到之前做的一個題目 最後一個檔案的大小跟crc32碼完全一致 故為明文破解
將未加密的壓縮包中的最後一個檔案解壓出來 用7zip壓縮 壓縮等級僅儲存 加密演算法ZipCrypto
arch開啟:
跑個2分鐘左右手動停止
原因:
將解密完的壓縮包開啟 在..\word\flag.xml中發現第二段 flag
將破解完的壓縮包 字尾改為doc 開啟得到:
發現信件內容剛好104個字元 13位
全選發現沒有顯示字型格式
說明字元經過處理 挨個看發現兩種格式 wingdings跟wingdings2 wingdings轉化為0 wd2轉換為1 再經過二進位制轉ascii
得到flag:
ctfshow{fe65ef83-0bfa-4f40-a5d0-ba216e650fc2}
(覆盤過程中手擼錯了一位 尬住
6、Music Game
這玩意覆盤覆盤了一個多小時屬實給我整麻了,,,
下載得到f1ag檔案 解壓得到f1ag.img
用DiskGenius載入(需要的可以找我要,,)
點選恢復檔案
開啟精選資料夾 找到字尾為.mcz的檔案 匯出來
搜尋關鍵字:
發現為malody的自制譜檔案
下載一個win版本的malody V 匯入譜子 編輯鋪面
手擼flag:(你ctf屆全是二刺猿)
ctfshow{bgm_is_nice}
7、一群強盜
下載得到附件 是一堆灰色的圖片 比賽時候聯想到圖片可能是異或操作或者進位制轉換,,然後就沒有然後了
復現:
觀察發現CRC32只有4種 聯想到比賽時候想到的進位制轉換 可能是四進位制
因為flag格式開頭為ctfshow 所以嘗試將“c”轉換為四進位制 剛好得到“1203” 猜想成立
嗯 我只會手擼 指令碼不會寫( 插個套神的指令碼吧
import zipfile
zipFile = zipfile.ZipFile('img.zip','r')
ziplist = ['']*72
for i in range(72):
ziplist[i] = str(i)+'.png'
flaghex = ''
flag = ''
for i in range(len(ziplist)):
zipfileinfo = zipFile.getinfo(ziplist[i])
flagpj = str(hex(zipfileinfo.CRC)[2:])
# 因為flag格式為ctfshow,所以直接找c的四進位制
# print(ord('c')) 99 --> 1203
if(flagpj == '7d349b41'):
flag+='1'
elif(flagpj == 'aa7b25f1'):
flag += '2'
elif(flagpj == 'd929ce96'):
flag += '0'
elif(flagpj == 'faac73ff'):
flag += '3'
else:
print('error!')
print(flag)
#print(len(flag))
str1 = ''
for i in range(0, len(flag), 4):
tmp = flag[i:i + 4]
str1 += chr(int(tmp, 4))
print(str1)
記得最後將結果的空格字串轉換為下劃線
ctfshow{56_robber}