【HDCTF2019】Maze WriteUp
查殼和脫殼
先查殼,發現有殼,根據提示用upx脫殼
代碼逆向
分析花指令
- 脫殼後拉入IDA分析,發現
.text:0040102C是一處無用的花指令,因為它的作用是跳到下一行(毫無意義,可以直接nop掉)。 - 而
.text:0040102E處call指令後而跟住的0EC85D78Bh不是一個地址(因為對其雙擊之後沒有反應),由此也可得知這段代碼受到了花指令的影響(部分代碼還有用處,不能直接nop掉)
去除花指令
- 使用Keypatch插件,直接將
.text:0040102C處patch為nop

- 因為
.text:0040102E處的部分代碼還有用處,不能直接nop掉,所以要先找出其中無用的部分。方法:在.text:0040102E處按U,將其重定義為一個一個的字節,之後就嘗試將第1個字節0E8hpatch為nop( 若能重新生成為代碼就是成功。不能的話,就還原,然後將之後的每個字節都嘗試一遍 ),如下圖2所示即為成功


- 最後選取所有紅色的部分,然後按
P重新生成為函數,之後就可F5查看偽代碼

迷宮分析
- 按
Shift+F12查看字符串窗口,發現了一個十分像迷宮的字符串
- 點進去,算了一下它的長度為70,推測是一個
10X7的迷宮,將其整理好後如下圖2所示

- 取得迷宮圖後,接著去main函數中分析迷宮的代碼邏輯。可以看出是以
wasd控制上下左右的移動
- 推測
+為起點,F為終點,人腦走一次,得出ssaaasaassdddw
- 嘗試提交
flag{ssaaasaassdddw},結果正確,
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 NgIokWeng's Blog!
評論






/image3.png)

/image.png)

/image.png)