我怎样才能调用缓冲区溢出?
我有一个家庭作业,要求我使用缓冲区溢出调用函数而不显式调用它。代码基本上是这样的:
#include <stdio.h>
#include <stdlib.h>
void g()
{
printf("now inside g()!n");
}
void f()
{
printf("now inside f()!n");
// can only modify this section
// cant call g(), maybe use g (pointer to function)
}
int main (int argc, char *argv[])
{
f();
return 0;
}
虽然我不知道该怎么办。我想改变程序计数器的返回地址,以便它直接进入g()的地址,但我不知道如何访问它。无论如何,提示将是伟大的。
没有找到相关结果
已邀请:
5 个回复
蓟类
习让休堂溯
输出:
掸牛浓疗
埠仙俊
或者这一个:
净爽
在返回到
的过程中从
调用,只需修改
而不直接调用
。 函数结尾类似的内联汇编被添加到
以修改堆栈上的返回地址的值,以便
将通过
返回。
了解此代码的工作原理可以更好地理解如何为构成缓冲区溢出技术基础的特定体系结构设置函数的堆栈帧。