[re]簡單逆向:2020網鼎杯白虎組re 惡龍 wp
題目分析
題目描述:這是一個與史萊姆和惡龍戰鬥的故事,請戰勝三頭惡龍,取得flag。張三長老說,試圖patch這個程序的人會得到錯誤的flag…
得到題目之後,發現是一個linux的逆向。查看一下程序功能:
結合之前的描述,感覺是一個遊戲題目,連續戰勝三次boss,便是成功,正常套路,都要打小怪升級,然後買裝備然後打boss,但,我選擇1. 和史萊姆戰鬥,然後死了…
逆向分析程序:
程序主體就是,只要boss還存在(一共三個),那麼就會指向dround(也就是菜單),然後三次之後就會輸出flag。
根據不同選擇進入不同函數,發現和史萊姆戰鬥的計算,史萊姆的戰鬥力永遠比你的戰鬥力高,也就是說你永遠打不過,你的初始戰鬥力是0x64,三個boss的戰鬥力分別是:
商店可以用2金幣提升1戰鬥力。
題目提示不要patch程序,否則會得到錯誤的flag,那麼我們就不patch,直接在程序運行的時候進行戰鬥力比較的時候修改我們的戰鬥力即可。
解題
三處斷點分別爲:
0x4015F9
0x40165C
0x4016BC
斷住這三個地方,然後把eax的值改爲比比較的數大即可。注意不要改戰鬥力的變量,因爲後來flag的輸出有可能用到,我們直接改比較用的寄存器就可以了,然後會輸出flag: