Papa brought me a packed present! let's open it.
Download : http://pwnable.kr/bin/flag
This is reversing task. all you need is binary
考查簡單的逆向分析能力缝左,主要還是看了不了解套路浓若。
用IDA打開flag文件,發(fā)現(xiàn)程序流程異常是越,檢測不到庫函數(shù)碌上,察覺到有殼。
用任意hex編輯器打開馏予,也可以直接在IDA中觀察Hex View,可以看到是加了UPX殼腿倚。
這里便可以直接用UPX殼工具解包(https://upx.github.io/)蚯妇,
upx -d -o flag_unpack flag
之后重新用IDA打開,查看main函數(shù)
流程已經(jīng)很清晰了:
- 使用malloc()開辟了一個堆空間硬贯,返回首地址陨收;
-
將flag的內(nèi)容通過strcpy復(fù)制到該地址處。
這里就不用跟進(jìn)到開辟的空間處去找答案拄衰,call strcpy()之前的rsi寄存器保存了flag內(nèi)容所在地址饵骨,跟進(jìn)到cs:flag,就能得到最終答案居触。