1625-5 王子昂 總結《2023年9月15日》 【連續第348天總結】
a. 問鼎杯題庫-逆向
b.小磊生病了
題目:小磊生病了,醫生檢查出小磊體內有兩種有害病菌b和c是引發的關鍵,同時也找到的消滅病菌的有益菌a ,現在要你幫助a戰勝b和c,治好小磊,小磊會告訴你flag是什麼。
直接執行會顯示andy,bob,carl三種菌的數量
觀察**結構可以發現最後flag的生成處:
很明顯,當通過了23次迴圈以上時,會以v24陣列的值作為下標來列印nefo字串
分別將兩個陣列複製下來進行處理,得到flag:
s = "nefolieihrthe"
h = [2, 5, 9 ,6 ,7 ,0 ,10 ,8 ,12 ,11 ,3 ,4 ,1]
for i in h:
print(s[i], end='')
fireinthehole還可以爆破:
00a31297 . /75
36 jnz short qqqq.00a312cf
00a31299 . |8bbd 60ffffff mov edi,dword ptr ss:[ebp-0xa0] ; di=v23,迴圈量
00a3129f . |33f6 xor esi,esi
00a312a1 . |85ff test edi,edi
00a312a3 . |7e 2a jle short qqqq.00a312cf
00a312a5 . |eb 09 jmp short qqqq.00a312b0
00a312a7 . |8da424 000000>lea esp,dword ptr ss:[esp]
00a312ae . |8bff mov edi,edi
00a312b0 > |8b94b5 64ffff>mov edx,dword ptr ss:[ebp+esi*4-0x9c] ; 選取flag字元
00a312b7 . |0fbe4415 b0 movsx eax,byte ptr ss:[ebp+edx-0x50]
00a312bc . |50 push eax
00a312bd . |68 48baa300 push qqqq.00a3ba48 ; %c
00a312c2 . |e8 14010000 call ; 輸出
00a312c7 . |46 inc esi
00a312c8 . |83c4 08 add esp,0x8
00a312cb . |3bf7 cmp esi,edi
00a312cd .^|7c e1 jl short qqqq.00a312b0
00a312cf > \68
4cbaa300 push qqqq.00a3ba4c ; pause
00a312d4 . e8 25000000 call qqqq.00a312fe
直接將eip改到這裡00a31299即可
注意要在初始化賦值工作進行之後,否則堆疊中無這些區域性變數
edi要手動寫入23,因為我們未合法進行若干次迴圈
esi注意要執行清空置0,否則print不從第0個開始
同樣能得到flag
至於演算法
粗略地分析了一下,整個程式一共有三層迴圈:
第一層隨機生成數
第二層依次比較第一名、第二名和第三名
第三層交換名稱和值
最複雜的三個第四層迴圈是寫入字串用的,分別為tmp=a,a=b, b=tmp
最後驗證是否第一名(即值最高的)為益生菌andy,是則繼續迴圈,不是則直接結束
如果andy連續勝利23次以上則輸出flag
嗯……概率有點感人哈,不過好像還是有可能的 不像擲骰子要求7那種完全沒戲
反正就是要求爆破咯╮(╯_╰)╭
c. 明日計畫
問鼎杯正賽
2016 12 3 問鼎杯線上賽6 2逆向分析
這道題目的檔案給我們的是乙個壓縮包a2ia8 6 2.rar,解壓之後得到乙個crackme.exe和readme.txt 開啟readme.txt可以看到對我們目標的描述。從這裡我們知道,這個就是逆向當中很平常的求serial計算演算法 或者更具提示暴力跑?這裡我們分析來逆向演算法 並且我們也知道...
藍橋杯軟體類題庫
入門訓練 begin 4 fibonacci數列 begin 3 圓的面積 begin 2 序列求和 begin 1 a b問題 基礎練習 basic 13 數列排序 basic 8 回文數 basic 7 特殊的數字 basic 6 楊輝三角形 basic 5 查詢整數 basic 4 數列特徵 ...
網鼎盃2020 joker逆向
gcc編譯,無殼 看一下程式結構 程式有函式分析錯誤,堆疊的原因,我就沒改它了,因為彙編也簡單,上手就擼 第乙個關鍵塊 4017dd就是乙個字串拷貝函式,動態可見,然後4017eb是第乙個無用函式,看一下 12 3456 78910 1112 1314 1516 1718 1920 char cde...