XCTF攻防世界--(新手賽區(qū))第1題快來圍觀學習!
2022-05-19 14:59 作者:rkvir逆向工程學院 | 我要投稿
1.查看題目提供的信息,只要我們玩通過這游戲就可以得到flag,直接下載附件
?????

????????????????????????
2.發(fā)現(xiàn)是個exe,先查殼,c\c++編譯無殼

3.打開exe查看運行流程

玩了一分鐘,和作者的要求一樣,我們必須玩過才能拿到flag,但是逆向怎么會乖乖聽話玩呢?開始整活!
4.拖進od查看是否有關鍵字符

一搜索就發(fā)現(xiàn)了一串可疑字符,初步估計這個意思就是成果通過游戲以后的提示,那我們就跟進去

發(fā)現(xiàn)這個提示是一個函數(shù)過程,又看到有一個跳轉(zhuǎn)是來到這個函數(shù),那我們慢慢跟上去看一下

往上20多行代碼以后發(fā)現(xiàn)一串字符,再次打開軟件看,這串字符就是菜單,那我們就可以直接推測這幾行代碼就是顯示菜單的,按照流程來看顯示完菜單以后就是要求我們進行游戲,游戲用過以后才顯示flag,那我們直接可以跳過游戲的環(huán)節(jié)直接顯示flag,那就找個合適的位置直接jmp到顯示提示信息的函數(shù)

5.往下一看發(fā)現(xiàn)一個retn,而且下面一堆int3 (int3 修改基本上不會影響程序),那我們讓這個菜單函數(shù)執(zhí)行完以后不進行正常的下一個函數(shù)直接跳到我們的成功提示地址,說做就做

6.地址太近是個短指令,還剛好影響不了int3代碼,好的,保存運行

果不其然,成功了,提交試了一下確實正確了
如有錯誤,請指正,謝謝!
標簽: