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