我有一个赋值告诉我,我需要通过在堆栈中运行代码来执行缓冲区溢出。我一直在尝试这样做,但每次我用堆栈的位置替换堆栈的“ret”位置,我希望代码驻留,它会保持seg错误。如果我用物理.o文件中存在的地址(如物理汇编代码)替换“ret”位置,它可以正常工作。你不被允许回到筹码上的位置吗?如果你不能返回堆栈地址,我很困惑如何使用你自己的汇编代码执行缓冲区溢出...(顺便说一句,我使用的是IA32小端机器)。
我的步骤:
这会导致段错误
答案 0 :(得分:4)
确保堆栈页面标记为可执行;现代操作系统通常将堆栈设置为不可执行,因此在设置程序计数器时会立即发生段错误。
答案 1 :(得分:1)