2021振兴杯参赛后感(部分writeup)
目錄
- 寫在前面
- 題目
- 中國文化
- 核心價值觀
- 怪異的信息
- Easy-RSA
- 二維碼
- 美麗的風景
- 狐貍牧羊
- 皮卡丘
- 從前有個鵝
- 寫在最后
寫在前面
距離參加振興杯已經將近一周了,各種獎項也都該出來了,最近剛好有時間回憶一下振興杯,順便把WP寫一下加深一下經驗,若有什么不對的地方還請各位大佬指正。
題目
振興杯B模塊的題目都是有關于CTF的題目,主要是包括雜項和密碼,可能是因為比賽時長的限制,主辦方也沒有出一些逆向和PWN之類的CTF題目。
此次CTF一共包括十幾道CTF題目,包括中國文化、核心價值觀、快樂的回收站、美麗的風景、怪異的信息、easy-rsa、二維碼等題目。
中國文化
打開題目附件后發現里面就一張ASCII碼表和一份TXT文本,我們打開文本發現是一些數字(-6、-10、38、42、42、40、37、-3、38、41、-4、39、41、-10、-5、-12),仔細尋找可能的提示,發現txt文件命名中包含著題目提示(hack很喜歡中國文化并請了一個大師幫他算了一下年齡,大師給了他封信信封表面寫著甲子二字,信的內容卻是一串阿拉伯數字)
眾所周知,一甲子代表60年因此我們將文本中每個數字統一相加60,之后與ACCII表對照得出flag
核心價值觀
打開附件,發現里面擁有一份未知格式的文檔和一份文本,我們先打開文本發現里面明顯是經過核心價值觀密碼加密的密文
(富強富強富強富強富強公正富強公正富強富強富強富強富強公正友善民主富強富強富強富強富強公正富強民主富強富強富強富強富強公正富強法治富強富強富強富強富強法治友善富強富強富強富強富強富強公正富強文明富強富強富強富強富強公正富強民主富強富強富強富強富強公正富強文明富強富強富強富強富強和諧富強富強富強富強富強富強富強和諧富強和諧富強富強富強富強富強和諧富強法治富強富強富強富強富強和諧富強文明富強富強富強富強富強和諧富強愛國富強富強富強富強富強公正富強平等富強富強富強富強富強公正富強和諧富強富強富強富強富強和諧富強文明富強富強富強富強富強和諧富強民主富強富強富強富強富強和諧富強文明富強富強富強富強富強公正富強民主富強富強富強富強富強和諧富強法治富強富強富強富強富強和諧富強文明富強富強富強富強富強法治友善文明)
根據附件內容提示,另一份就是加密腳本,我們將他打開嘗試進行解密:
def encdoe(string):len_str = len(string)if len_str % 16 != 0:return 0result = ''for x in range(0, len_str, 16):encode_char = string[x:x+16]temp_int = [ENSTRS.index(encode_char[y:y+2]) for y in range(0, 16, 2)]int_list = [temp_int[x]+temp_int[x+1] for x in range(0, 8, 2)]bin_temp = [bin(i).replace('0b', '') for i in int_list]binstr_list = []for b in bin_temp:if len(b) < 4:binstr_list.append(b.zfill(4))else:binstr_list.append(b)binstr = ''.join(binstr_list)result = result + chr(int(binstr, 2))return result經過分析后我們發現這是一份殘缺的解密腳本,主辦方將其刪除并修改了一部分,仔細分析腳本的話很快就能看出來的。
我們開始進行腳本的復原和補充得到新的解密腳本:
運行解密腳本之后得到flag。
怪異的信息
打開一條怪異的信息文本里面存放著未知的數字和字符串,共有兩排,懷疑是密碼題,仔細分析我們懷疑是偽柵欄加密:
342516 agl{fbdc4c645ed20bc}7@3@我們將其按照每六個一排進行分組
342516 agl{fb dc4c64 5ed20b c}7@3@然后將每一列按照第一排的數字進行順序排放。
123456 flag{b 64dcc4 0d5e2b 37c}@@最后將字符合為一排即得到flag
Easy-RSA
打開文檔,查看發現RSA加密:
c = 327775906188212562401884578831960174032614235256738162994915558726919 n = 544187306850902797629107353619267427694837163600853983242787532365123 e = 65537 m = ???題目中已經給出C、N、E因此我們需要根據這些有限的條件進行解密明文。
我們首先進行分離大質數N
對n進行質因數分解,得到了4個質因數,根據歐拉公式構建Python代碼
φ(x * y * zc) = φ(x) * φ(y) * φ(z) φ?=(x-1)(y-1)(z-1)(c-1)
運行腳本解出flag。
二維碼
二維碼這種類型的題目大概率是主辦方用來給選手保分的,多數為CTF第一道題目,作為簽到題,因此我們只需要利用主辦方所給的QR-Search進行掃描即可得到flag
美麗的風景
打開附件是一張風景圖片,根據我們的做題經驗,看到圖片的第一時間想到圖片隱寫的幾種套路,無非就是修改圖片的行高,寬高,偽加密,偽造文件頭,lsb加密之類的圖片隱寫術。我們利用主辦方所給的010打開圖片進行分析,發現是正常的png圖片頭
此時我們嘗試修改行高。
成功得到flag
狐貍牧羊
再次看到圖片類型CTF題目,我們聯想到常規圖片隱寫術,將行高,文件頭等類型分析過后發現不是這些類型的圖片隱寫。我們分析是否存在lsb圖片隱寫,查看主辦方所給工具,進入kali中尋找工具,發現一個zsteg腳本工具,我們嘗試利用它進行解密,得到flag
皮卡丘
同樣的圖片隱寫,圖樣的010神器,我們利用010打開圖片直接搜索flag發現在圖片尾部存在flag。
從前有個鵝
打開附件,發現有個壓縮包
對壓縮包進行解壓
發現有兩個文件,txt文件里面沒有什么重要的重要的信息,繼續解壓壓縮包
解壓到最后發現一個需要解壓密碼的壓縮文件,以及可以看到之前的壓縮包與這個壓縮包命名方式的不一樣,對此我們將前面壓縮包的名字拼接在一起可以得到一個base64值
bTUzV3hPMjVvRVQ1V0RyZzI=
對base64值解密可得到一串字符
字符就是解開“發現了個大寶貝.7z”壓縮包的密碼,解開壓縮包后可以獲得一個被分割的二維碼,由此得知我們還需要找到其它的二維碼進行拼接
我們對當前文件進行分析,發現最后一張圖片“我是一只快樂的鵝.png”與其它圖片的二進制文件有差異,并且能夠看到有其它文件的數據頭
修改后綴后可以打開發現里面還有兩個壓縮文件
嘗試解壓發現文件需要密碼,解壓密碼就在文件附加信息之中,解壓后得到兩個壓縮包,第一個壓縮包解開后,發現里面有一個flag.txt可惜文本里面沒有關鍵信息,第二個壓縮包解壓需要密碼。重新整理思路,我們發現之前每一個壓縮包解開就有一張圖片,我們把所有圖片放在一起進行對比,而對比之前的圖片,我們發現這個圖片還與其它圖片高度不同,由此懷疑圖片被修改了高度以此來隱藏信息,修改高度后可以發現一串數字,由之前壓縮包的線索可知,這是壓縮包的解壓密碼。
解開壓縮包后,我們可以得到新的二維碼切割圖片
目前已經得到了,兩塊二維碼的切割圖片,還差一塊二維碼切割圖片,我們就能構造二維碼圖片了
目前唯一沒有處理的就是“發現了壓縮包誒.zip”以及里面的“flag.txt”文件,我們重新將兩個文件進行分析,當我們對“發現了壓縮包誒.zip”進行隱寫分析后,可以發現里面有隱藏文件
我們將文件進行分離出來,分離后就可以得到最后一塊被切割的二維碼
將二維碼拼接好,拼接好后,發現缺少定位點,我們手動制作定位點。
拼接好二維碼的定位點后我們用軟件掃描二維碼,就得到了flag。
寫在最后
關于振興杯B模塊的CTF題目的wp暫時就寫道這里,下次有機會在做補充,還請各位大佬指正。
總結
以上是生活随笔為你收集整理的2021振兴杯参赛后感(部分writeup)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 声卡解决办法合集
- 下一篇: 网站加速教程--提升性能的同时节约10倍