gpt4 book ai didi

c - 如何调用缓冲区溢出?

转载 作者:太空狗 更新时间:2023-10-29 16:22:35 26 4
gpt4 key购买 nike

我接到了一项家庭作业,要求我使用缓冲区溢出来调用函数而不显式调用它。代码基本上是这样的:

#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() 的地址,但我不确定如何访问它。无论如何,提示会很棒。

最佳答案

基本思想是改变函数的返回地址,以便当函数返回时继续在新的被黑地址执行。正如 Nils 在其中一个答案中所做的那样,您可以声明一 block 内存(通常是数组)并以返回地址也被覆盖的方式溢出它。

我建议您不要在没有真正理解它们如何工作的情况下盲目地接受这里给出的任何程序。这篇文章写得很好,你会发现它非常有用:

A step-by-step on the buffer overflow vulnerablity

关于c - 如何调用缓冲区溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com