日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021振兴杯参赛后感(部分writeup)

發(fā)布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021振兴杯参赛后感(部分writeup) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

      • 寫在前面
  • 題目
    • 中國文化
    • 核心價值觀
    • 怪異的信息
    • Easy-RSA
    • 二維碼
    • 美麗的風景
    • 狐貍牧羊
    • 皮卡丘
    • 從前有個鵝
      • 寫在最后

寫在前面

距離參加振興杯已經將近一周了,各種獎項也都該出來了,最近剛好有時間回憶一下振興杯,順便把WP寫一下加深一下經驗,若有什么不對的地方還請各位大佬指正。

題目

振興杯B模塊的題目都是有關于CTF的題目,主要是包括雜項和密碼,可能是因為比賽時長的限制,主辦方也沒有出一些逆向和PWN之類的CTF題目。
此次CTF一共包括十幾道CTF題目,包括中國文化、核心價值觀、快樂的回收站、美麗的風景、怪異的信息、easy-rsa、二維碼等題目。

中國文化

打開題目附件后發(fā)現(xiàn)里面就一張ASCII碼表和一份TXT文本,我們打開文本發(fā)現(xiàn)是一些數(shù)字(-6、-10、38、42、42、40、37、-3、38、41、-4、39、41、-10、-5、-12),仔細尋找可能的提示,發(fā)現(xiàn)txt文件命名中包含著題目提示(hack很喜歡中國文化并請了一個大師幫他算了一下年齡,大師給了他封信信封表面寫著甲子二字,信的內容卻是一串阿拉伯數(shù)字)
眾所周知,一甲子代表60年因此我們將文本中每個數(shù)字統(tǒng)一相加60,之后與ACCII表對照得出flag

核心價值觀

打開附件,發(fā)現(xiàn)里面擁有一份未知格式的文檔和一份文本,我們先打開文本發(fā)現(xiàn)里面明顯是經過核心價值觀密碼加密的密文

(富強富強富強富強富強公正富強公正富強富強富強富強富強公正友善民主富強富強富強富強富強公正富強民主富強富強富強富強富強公正富強法治富強富強富強富強富強法治友善富強富強富強富強富強富強公正富強文明富強富強富強富強富強公正富強民主富強富強富強富強富強公正富強文明富強富強富強富強富強和諧富強富強富強富強富強富強富強和諧富強和諧富強富強富強富強富強和諧富強法治富強富強富強富強富強和諧富強文明富強富強富強富強富強和諧富強愛國富強富強富強富強富強公正富強平等富強富強富強富強富強公正富強和諧富強富強富強富強富強和諧富強文明富強富強富強富強富強和諧富強民主富強富強富強富強富強和諧富強文明富強富強富強富強富強公正富強民主富強富強富強富強富強和諧富強法治富強富強富強富強富強和諧富強文明富強富強富強富強富強法治友善文明)

根據附件內容提示,另一份就是加密腳本,我們將他打開嘗試進行解密:

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

經過分析后我們發(fā)現(xiàn)這是一份殘缺的解密腳本,主辦方將其刪除并修改了一部分,仔細分析腳本的話很快就能看出來的。
我們開始進行腳本的復原和補充得到新的解密腳本:

def decoder(string):len_str = len(string)if len_str % 16 != 0:return 0result = ''for x in range(0, len_str, 16):decode_char = string[x:x + 16]temp_int = [ENSTRS.index(decode_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 resultENSTRS = ("富強", "民主", "文明", "和諧", "自由", "平等","公正", "法治", "愛國", "敬業(yè)", "誠信", "友善")while True:decode_str = input("請輸入解密字符串:\n")result = decoder(decode_str)print("解密結果:\n{}".format(result))

運行解密腳本之后得到flag。

怪異的信息

打開一條怪異的信息文本里面存放著未知的數(shù)字和字符串,共有兩排,懷疑是密碼題,仔細分析我們懷疑是偽柵欄加密:

342516 agl{fbdc4c645ed20bc}7@3@

我們將其按照每六個一排進行分組

342516 agl{fb dc4c64 5ed20b c}7@3@

然后將每一列按照第一排的數(shù)字進行順序排放。

123456 flag{b 64dcc4 0d5e2b 37c}@@

最后將字符合為一排即得到flag

Easy-RSA

打開文檔,查看發(fā)現(xiàn)RSA加密:

c = 327775906188212562401884578831960174032614235256738162994915558726919 n = 544187306850902797629107353619267427694837163600853983242787532365123 e = 65537 m = ???

題目中已經給出C、N、E因此我們需要根據這些有限的條件進行解密明文。
我們首先進行分離大質數(shù)N

對n進行質因數(shù)分解,得到了4個質因數(shù),根據歐拉公式構建Python代碼
φ(x * y * zc) = φ(x) * φ(y) * φ(z) φ?=(x-1)(y-1)(z-1)(c-1)

import gmpy2 from Crypto.Util.number import long_to_bytesc = 327775906188212562401884578831960174032614235256738162994915558726919 n = 544187306850902797629107353619267427694837163600853983242787532365123 e = 65537 p1 = 6343 p2 = 3125921 p3 = 18787605191 p4 = 1460845452517780979888695605897966610047445076051phi = (p1 - 1) * (p2 - 1) * (p3 - 1) * (p4 - 1) d = gmpy2.invert(e, phi) m = pow(c, d, n) print(long_to_bytes(m))

運行腳本解出flag。

二維碼

二維碼這種類型的題目大概率是主辦方用來給選手保分的,多數(shù)為CTF第一道題目,作為簽到題,因此我們只需要利用主辦方所給的QR-Search進行掃描即可得到flag

美麗的風景

打開附件是一張風景圖片,根據我們的做題經驗,看到圖片的第一時間想到圖片隱寫的幾種套路,無非就是修改圖片的行高,寬高,偽加密,偽造文件頭,lsb加密之類的圖片隱寫術。我們利用主辦方所給的010打開圖片進行分析,發(fā)現(xiàn)是正常的png圖片頭

此時我們嘗試修改行高。


成功得到flag

狐貍牧羊

再次看到圖片類型CTF題目,我們聯(lián)想到常規(guī)圖片隱寫術,將行高,文件頭等類型分析過后發(fā)現(xiàn)不是這些類型的圖片隱寫。我們分析是否存在lsb圖片隱寫,查看主辦方所給工具,進入kali中尋找工具,發(fā)現(xiàn)一個zsteg腳本工具,我們嘗試利用它進行解密,得到flag

皮卡丘

同樣的圖片隱寫,圖樣的010神器,我們利用010打開圖片直接搜索flag發(fā)現(xiàn)在圖片尾部存在flag。

從前有個鵝

打開附件,發(fā)現(xiàn)有個壓縮包

對壓縮包進行解壓

發(fā)現(xiàn)有兩個文件,txt文件里面沒有什么重要的重要的信息,繼續(xù)解壓壓縮包






解壓到最后發(fā)現(xiàn)一個需要解壓密碼的壓縮文件,以及可以看到之前的壓縮包與這個壓縮包命名方式的不一樣,對此我們將前面壓縮包的名字拼接在一起可以得到一個base64值
bTUzV3hPMjVvRVQ1V0RyZzI=
對base64值解密可得到一串字符

字符就是解開“發(fā)現(xiàn)了個大寶貝.7z”壓縮包的密碼,解開壓縮包后可以獲得一個被分割的二維碼,由此得知我們還需要找到其它的二維碼進行拼接


我們對當前文件進行分析,發(fā)現(xiàn)最后一張圖片“我是一只快樂的鵝.png”與其它圖片的二進制文件有差異,并且能夠看到有其它文件的數(shù)據頭


修改后綴后可以打開發(fā)現(xiàn)里面還有兩個壓縮文件
嘗試解壓發(fā)現(xiàn)文件需要密碼,解壓密碼就在文件附加信息之中,解壓后得到兩個壓縮包,第一個壓縮包解開后,發(fā)現(xiàn)里面有一個flag.txt可惜文本里面沒有關鍵信息,第二個壓縮包解壓需要密碼。重新整理思路,我們發(fā)現(xiàn)之前每一個壓縮包解開就有一張圖片,我們把所有圖片放在一起進行對比,而對比之前的圖片,我們發(fā)現(xiàn)這個圖片還與其它圖片高度不同,由此懷疑圖片被修改了高度以此來隱藏信息,修改高度后可以發(fā)現(xiàn)一串數(shù)字,由之前壓縮包的線索可知,這是壓縮包的解壓密碼。


解開壓縮包后,我們可以得到新的二維碼切割圖片


目前已經得到了,兩塊二維碼的切割圖片,還差一塊二維碼切割圖片,我們就能構造二維碼圖片了

目前唯一沒有處理的就是“發(fā)現(xiàn)了壓縮包誒.zip”以及里面的“flag.txt”文件,我們重新將兩個文件進行分析,當我們對“發(fā)現(xiàn)了壓縮包誒.zip”進行隱寫分析后,可以發(fā)現(xiàn)里面有隱藏文件

我們將文件進行分離出來,分離后就可以得到最后一塊被切割的二維碼


將二維碼拼接好,拼接好后,發(fā)現(xiàn)缺少定位點,我們手動制作定位點。

拼接好二維碼的定位點后我們用軟件掃描二維碼,就得到了flag。

寫在最后

關于振興杯B模塊的CTF題目的wp暫時就寫道這里,下次有機會在做補充,還請各位大佬指正。

總結

以上是生活随笔為你收集整理的2021振兴杯参赛后感(部分writeup)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。