1. 程式人生 > 實用技巧 >CTF-NEFU校賽-題解

CTF-NEFU校賽-題解

Write by NEFUNSI:

ghosin

0ERROR

簽到


signin

下載 signin.txt 開啟得到一串 base64,解碼得到 flag{we1come_t0_NEFUCTF!}


Re_SignUp

下載 SignUp ,使用 010 Editor 打開發現是 Linux 可執行檔案。用 ida64 開啟可看到 main 函式處有字串 xr yeI^r}.s{A)qAL/h{lM{AI.(rz?c ,根據 Hint 中的 xor 使用線上工具爆破可得到 fl>g{W@lc0me_7o_R1verSe_W06ld!}

MISC

untitle

下載壓縮包,發現加密的 flag.txt

和沒加密的 untitle.wav 。解壓 untitle.wav ,發現是倒放。使用 Audacity 逆轉後聽歌識曲得到 Untitled
Untitled 作為密碼,使用 WinRAR 解壓 flag.txt 發現報錯和 fakeflag 。

! G:\labs\nefuctf\misc\111flag111 (2).rar: 無法設定 C:\Users\ghosi\AppData\Local\Temp\Rar$DRb13916.37568\flag.txt 的安全資料
這個安全 ID 不能分配為此物件的所有者。

懷疑是 NTFS交換資料流隱寫 ,使用 NtfsStreamsEditor2

掃描得到 flag{M4ke_m1sc_gr3at_ag@in}


蛇圖攻擊

下載得到一個 zip 壓縮包,解壓得到 看到了嗎flag就在那.zip蛇圖.jpg,在 看到了嗎flag就在那.zip 中看到要找的 flag.txt 和已有明文的 蛇圖.jpg ,使用 ZIP已知明文攻擊 即可得到 flag.txt ,內容為 flag{congratulation~~} 。這裡注意在壓縮 蛇圖.jpg 的時候要使用 Bandizip ,使用其他壓縮軟體可能會使 AZPR 類軟體出現類似 No matching files in selected archives 的錯誤。


別人家的孩子

下載附件開啟聽一下,發現左右聲道不同。拖進 Audacity ,去掉左聲道的歌曲,右聲道前半部分為莫斯電碼,記錄下內容為 ..-./.-../.-/--./-/-----/-.../...-- ,可解出內容為 flagt0b3 ,後半部分為 dtmf,使用 dtmf2num 讀取到 121111117114115101108102 ,可解出 yourself。至此拼接得到 flag{t0b3yourself}

誰還沒受過傷呢

根據題意,心願小姐失戀了,然後附了一個QQ號:2508898249,因此就從QQ號下手找線索。

開啟資料頁可以看出資訊量不大,主要就是有生日,其他資訊不出意外應該都在空間裡面

開啟空間,首先看到幾條說說,其中包含一條:

百度網盤開啟是一個IDOL的資料夾,下載以後是9張許嵩的照片,這裡注意了,第9張照片明顯體積偏大,而照片又很糊,說明照片裡面有東西

繼續翻說說,又發現了一個線索說說

不知道有什麼用,暫且留在這裡不動。

看看其他地方,相簿裡面有一個有問題的照片,根據問題很明顯就是前面心願小姐所@的人就是問題的答案,填入DK_night後,得到一張圖片,掃描圖片上的二維碼即可得到前一半flag

然後繼續看,留言板裡有一段話

G1v3_me_s0m3_rEd_P4cKe7eS_t0_g3t_7h3_h1nt!

不知道有什麼用,暫且放著。

空間裡能得到的線索就這麼多了,再回頭看看照片,第九張照片用010Editor開啟後發現有隱寫的zip格式的壓縮包,分離出來以後如圖

hint已經很明顯了,是生日按照格式輸入就是密碼,但是填入前面的日期卻無法解密,仔細觀察後發現上面的生日是農曆,將其日期轉成公曆以後即可得到2001.5.14(這裡這個日期有點坑,轉成2001年的四月廿二好像日期不太對,換思路轉為今年的四月廿二才為正確日期,成功解密),還有一種方法是知道了密碼格式之後直接放進cracker裡面按照格式爆破即可得到,速度也很快,這裡就不作具體說明了。

開啟flag.doc以後發現裡面是空的,ctrl+a之後發現有字元,文字換顏色之後發現是個假flag,說明線索不在文件裡,再看看文件的詳細資訊

可以看出備註和管理者裡面各有一堆亂序字元,其中管理者裡面的字元有明顯的Base64加密標誌,解密一次後發現變成了亂碼,懷疑是加密後的成分殘缺導致的錯位,考慮到上面備註內的不明所以的亂碼,將其和此段合併後解密(N次套娃)後即可得到後半flag

even_1f_i_L0Ve_U}

CRYPTO


RSA1.0

前置知識: https://xz.aliyun.com/t/6459

from Crypto.Util.number import *
import gmpy2

# 由題目可知
c = 45771827077895268121546606393404724664015354394782828337635308358292455516045347632184096192996835878084629358486100781061415523065007935763870549459874855232581330470311918549209690663379064436674445311856972558138654423953641880869235765375826041038321658329327107626577671053285966037170551853374920563440
e = 65537

n = 51644741119502351404435614782384203642721946675648874025147110583432277606213746585645021132709993574641883435114709470653847057718236543709859136714778649404725233027975626929711061148770545740304700844663373207681750776232949001954620241734085537399155514559867656395449958909477471179617512586129540850043
# yafu 分解 n 可得 p 和 q
p = 7186427563087403123764567435071522152765535485843889386595810558353757249884932307781450308876687526723957522099910738089951348400929674280355762675680509
q = 7186427563087403123764567435071522152765535485843889386595810558353757249884932307781450308876687526723957522099910738089951348400929674280355762675680727

# 計算私鑰 d
d = gmpy2.invert(e, (p-1)*(q-1))

# 解密 m
m = pow(c,d,n)

print(long_to_bytes(m))
# b'flag{now_y0u_know_rsa}'


are you file?

下載 6.txt ,發現是 Ook! 編碼,使用線上工具解碼得到 呋食食性噗哮食冬註魚嗥笨麼噤覺我嘶人雜嗚有怎囑爾發常哮出沒喜唬有意吖人哞哈類更我呆魚蜂圖呆喜食氏告嘶嗒洞現訴訴盜萌現嘶嘿雜非嗒和噗發笨 ,是熊曰編碼,使用線上工具解碼得到 G2aZlXllv1_uvohfim3}deBb=f{yhenaotGmkbFXgfpfoadelf!,猜測柵欄密碼,使用線上工具,每組字數 3 解碼得到 GmG23ma}kZdbleFXBXlbgl=fvfp1{f_youhavedonehalfofit! 。根據結尾 _youhavedonehalfofit! 可知已經解開一半了。去掉這部分,猜測接下來是W型柵欄密碼,因為柵欄密碼加密後第一位不變,故逆轉字串為 f{1pfvf=lgblXBXFelbdZk}am32GmG ,使用線上工具,欄數為 3 可得到 flag{bml1X3BpX2FfeGlvbmdfZGk=} 。解碼其中的 base64 可得到 flag{niu_pi_a_xiong_di}

Web

詳見:[f1oat's blog - 校賽web-wp](

RE

Test_your_math

IDA開啟後檢視字串,發現flag關鍵字

查詢之後反向尋找其在程式中的位置

繼續在主函式回溯其判斷輸入資料正確性的位置

得到一個判斷輸入資料正確性的函式,轉為原始碼形式

很明顯可以看出是一個解方程,只需使用hint中提到的z3解出答案方程答案即可得到flag

maze

拿到題目開啟後有一個很明顯的UPX殼,無腦用UPX_SHELL脫殼後重新開啟

可以看出這應該是關鍵程式碼的一部分。

這裡jnz跳轉到了下一行程式碼,相當於沒跳轉,而下面的call near ptr 0EC85D78Bh呼叫了一個不是地址的地址,可以推斷出這段程式碼添加了花指令,IDA分析失敗了。

可以確定這個jnz指令是花指令,還有下面的call指令。
先將jnz指令nop掉。

之後就是這個call指令,不能全部nop,因為後面那個東西可能是有效程式碼。摁d將其先轉換為位元組資料。

經過試驗(先將第一個資料nop掉再轉成程式碼,不行再將前倆資料nop……)發現 db 0E8h這條指令是新增的花指令,將其nop掉,nop掉之後IDA自動的將後面的資料轉換為程式碼資料

此時資料地址是紅色的,將關鍵程式碼全部選中,摁p鍵將其宣告為函式
然後就可以F5虛擬碼了

根據題目maze可知這是一個迷宮題。
控制的有兩個資料,一個是dword_408078,另一個是dword_40807C
雙擊進去檢視初始資料。
初始狀態:

dword_408078=7
dword_40807C=0

然後經過14次移動需要使

dword_408078=5
dword_40807C=-4

然後在記憶體中找到迷宮

提取出來排列之後

用wasd控制行走,dword_408078控制左右,dword_40807C控制上下。
s是上,w是下,a是右,d是左。
行走路徑為ssaaasaassdddw
則flag為flag{ssaaasaassdddw}