【发布时间】:2018-09-30 14:03:25
【问题描述】:
查看一些基本的基于堆栈的缓冲区溢出,我对调用者的 ebp 在 basic return address overwrite 和 off-by-one ebp overwrite 中的区别感到困惑。
在返回地址覆盖中,目标是粉碎堆栈以覆盖返回地址,从而控制 eip。
在一次攻击中,调用者的ebp的LSB被覆盖。这会强制 ebp 弹出,并将 esp 移动到攻击者控制的缓冲区内的某个位置,从而引发对返回地址和 eip 的控制。
我的困惑源于 ebp 的行为。在基本的返回地址覆盖中,我们用垃圾字节覆盖调用者的 ebp 显然无关紧要,但是 ebp 的值需要在一次攻击中保持一致。函数epilogue在基本缓冲区溢出情况下如何工作?
mov esp, ebp
pop ebp
retn
【问题讨论】:
标签: security buffer-overflow exploit