这是十分经典的栈迁移题目

拿到题目例行检查

 

 ciscn_2019_s_4***_main函数

 

 32位程序开启了nx保护

进入ida,发现了很明显的system

我们进入main函数查看vul

ciscn_2019_s_4***_main函数_02

 

可以看到溢出的部分不够我们rop所以这道题通过栈迁移去做

ciscn_2019_s_4***_其他_03

 

 首先先通过溢出泄露出ebp的地址然后通过ebp的地址进行偏移

ciscn_2019_s_4***_main函数_04

 

 可以看到我们输入的a的地址是0xd140ebp的地址是0xd178所以我们可以用ebp-0x38使栈迁移到这里

leave的地址我们可以随便找一个,

完整exp如下

 

ciscn_2019_s_4***_其他_05

 

 注意:system前面的a不可以去掉,否则拿不到shell(多次试验后的结果)

 

ciscn_2019_s_4***_其他_06

 

 成功拿到flag

结束!!!