第一次学习手脱,就想着记录一下
此题作为签到题好像是可以直接运行得到flag的,应该是出题人忘了,本题要考察的其实是关于upx的脱壳
先下载附件
发现有个upx壳,用指令脱一下壳,这里用到upx4.21
然后发现脱壳失败,看样子不能用工具脱upx壳了,试试手脱
由于之前查到的是64位程序,所以打开工具,这里用到了xdbg
打开文件查看断点
这里发现有个push断点,应该是入口断点,直接进去
按F9运行到断点处
咦,怎么不是之前看见的那个断点,可能是那两个断点中的另一个断点。。。
再按F9运行到下一个断点吧
到了,这时候再按F7逐步走完push指令
发现RSP有变化
根据ESP定律在RSP的内存地点下断点
点击在转储中跟随
在右下角内存中下一个4字节断点,下好之后按F9运行到断点
这里发现一串pop后有一个大跳而且是jmp,大概率是我们要找的目标位置
在jmp行直接下断点,F9与F7结合运行过去
这时候就可以使用Scylla插件了
转储就可以dump出来了
这里为了方便查找和使用就放桌面上
而且是个exe文件,大概率是对的吧QAQ
这时候就可以用你老婆IDA打开了
发现有main函数,这下应该是把壳脱掉了
进入main函数,F5反汇编得到伪代码
就可以得到flag了
ISCTF{873c-298c-2948-23bh-291h-kt30}