大家好,我是胡一米。這期視頻是關(guān)于2016年看雪CTF第7題解題資料。
視頻是基于其他大佬文字Writeup錄制的,所以在視頻操作之前就已知了該題中的各種坑,如反調(diào)試等,所以不再演示踩坑過(guò)程。
第7題主要參考了作者本文的敘述、HighHand、風(fēng)間仁的Writeup,鏈接如下:
風(fēng)間仁:
https://bbs.pediy.com/thread-213966.htm
HighHand:
https://bbs.pediy.com/thread-213981.htm
在本期中,主要討論2個(gè)問(wèn)題。這2個(gè)問(wèn)題可能與最終的Key沒(méi)有太大的聯(lián)系,但題目中既然出現(xiàn)了,還是說(shuō)一說(shuō)。此2個(gè)問(wèn)題分別是:
a. 通過(guò)SEH異常執(zhí)行核心代碼
b. 兩人取數(shù)和最大,遞歸搜索
結(jié)合其他大佬的分析過(guò)程,可以直接定位到關(guān)鍵點(diǎn)。.
類似的都是通過(guò)SEH觸發(fā)異常來(lái)執(zhí)行關(guān)鍵代碼
Patch的方法在29題有說(shuō)到。
通過(guò)動(dòng)態(tài)調(diào)試,理解程序的遞歸含義。
(圖片請(qǐng)看pdf,這里不弄格式了)
博弈問(wèn)題
941rPYOWMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614
141622224F224C48C6n522GM6M2822C82822221F2eII2AUGig264w284ICIl1242M262G226S2Icq6A6o442
使用visual studio,編譯作者的注冊(cè)機(jī),即可得到正確的注冊(cè)碼。
至于出現(xiàn)多解的原因有2個(gè):其一是在驗(yàn)證key時(shí),由一個(gè)博弈問(wèn)題變成取數(shù)問(wèn)題,這就導(dǎo)致了更多種的取法;其二是取法(flag)到key的轉(zhuǎn)換方法不唯一。具體敘述如下:
以下所說(shuō)的flag都是風(fēng)間仁writeup中的flag,具體含義是:為1則代表被取了;為0代表沒(méi)有被取走。
風(fēng)間仁通過(guò)遞歸搜索,得到了某一個(gè)flag??偣驳膄lag有330個(gè),但是風(fēng)間仁只取了其中的某一個(gè)。
但是這一個(gè)flag轉(zhuǎn)換成key的方法不是唯一的。
如風(fēng)間仁轉(zhuǎn)化為:
941rPYOWMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614。
其實(shí)也可以轉(zhuǎn)換為:
941rPaOUMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614。
這兩個(gè)key,都對(duì)應(yīng)同一個(gè)flag,也就是對(duì)應(yīng)同一個(gè)遞歸解法。換句話說(shuō):flag和key是一對(duì)多的關(guān)系。這就導(dǎo)致了每個(gè)flag可能對(duì)應(yīng)多個(gè)key。進(jìn)一步地,又存在多個(gè)flag,這使得key的數(shù)量會(huì)更多。在這么大范圍的key中選擇一個(gè)第10位為F的,同樣存在很多。
0101
1010101010101010101010101010101
010110101010101010101010101010101010101010101010101010101
題目很好。