栈迁移


1.定义

原理:栈迁移实际上是解决当原始栈可读入字符串长度不够的情况下rop链往哪儿写的问题,因为rop链必须借助栈溢出来达到攻击手段,所以rop链必须写在栈上,所以我们需要改变rsp的值来改变栈帧为能容纳rop链的那块区域。

image-20240903113700758

2.利用方式

1.pop rsp

image-20240903113850415

2.leave ret

image-20240903113918379

3.利用xchg

xchg是交换指令,在gdbsearch xchg,找到该指令的gadget片段,利用 将rsp和其他寄存器的值进行交换的指令,来控制这个寄存器的值从而控制rsp的值来达到栈迁移的目的。

search xchg % rsp 或者 search mov % rsp

3.案例

image-20240903202935442

这段exp太抽象了,理解起来很不容易,多次进行栈迁移。

总之,要在新的区域构造rop链,就要修改rsp把栈迁移过去。


文章作者: 0x00dream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0x00dream !
  目录