【问题标题】:Why does one have to jump to esp (buffer overflow)?为什么必须跳转到 esp(缓冲区溢出)?
【发布时间】:2016-03-02 07:24:14
【问题描述】:

根据我现在的理解,由于函数的参数被传递到调用堆栈,如果一个参数“溢出”它给定的缓冲区,它可以覆盖之后的内存。如果足够,它可以覆盖给指令指针(eip)的返回地址。因此,通过对 eip 的控制,我们可以将执行发送到在其他地方溢出的 shell 代码。但是,shell 代码中的坏字符不会被执行。为什么会这样,为什么我们需要跳转到 esp 再跳转到 shell 代码而不是直接跳转?如果我错了,请纠正我。谢谢。

【问题讨论】:

    标签: buffer-overflow


    【解决方案1】:

    据我了解,跳到 esp 是正常的例行程序。 esp 是下一个操作的指针;这个名字不是说明了一切吗xD? 该架构实现了您默认使用寄存器。

    也欢迎纠正我;D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多