IN SHORT:我想运行堆栈段中的代码。
细节问题: 我们的目的是使用堆栈溢出方法制作一个攻击程序。
程序将代码打印到file1.txt 目标程序有一个PROC,它分配空间并将字符放入分配的堆栈中。
我们希望目标程序从file1.txt获取攻击代码, 并强制它从堆栈中运行代码。 现在,我们需要将PROC的返回值与堆栈段中的攻击代码的地址进行交换。
我成功地用代码的地址交换了PROC的ret值,但是ip认为这个有效地址是CODE SEGMENT而不是STACK SEGMENT。
那么,我们如何让ip知道STACK SEGMENT的这个地址而不是CODE SEGMENT ???
答案 0 :(得分:0)
假设您正在使用内存模型进行讨论,该模型至少可以区分code
和stack
段在物理RAM
中的实际位置,并且代码在real 8086 mode中运行(否则您很难确定与堆栈段的地址空间匹配的段描述符的正确值,并允许在攻击期间执行代码)您有三个选项:{{1} },far call
和far jump
说明。有关这些指令的定义,请参阅一些Intel x86指令集参考,例如this one