gpt4 book ai didi

c - 为什么我的缓冲区溢出尝试会出现段错误?

转载 作者:行者123 更新时间:2023-11-30 19:23:44 25 4
gpt4 key购买 nike

我想知道为什么缓冲区溢出漏洞在特定情况下不起作用。到目前为止,我正在处理的溢出可以重定向返回地址,当我专注于一 block 内存时,比如 <_fini>程序将退出,而不执行该函数之后的任何其他操作。奇怪的是,当我尝试将内存重定向到环境变量时。由于某种原因,由于段错误,这不起作用。有人知道这是为什么吗?

这是代码

#include <stdio.h>

void func(char *buff){
char buffer[5];
strcpy(buffer, buff);
printf("%s\n", buffer);
}

int main(int argc, char *argv[]){
func(argv[1]);
printf("I'm done!\n");
return 0;
}

最佳答案

我使用环境变量写了一篇关于缓冲区溢出的小文章,这可能对您有帮助:http://pinkmist.dyndns.org:8080/2012/04/24/basic-stack-overflow/ 。有很多因素可能会导致您的问题。我想问一下,您是否尝试过在没有环境变量的情况下编写缓冲区溢出?我发现使用环境变量使事情变得更加容易,但这可能是一个很好的学习练习,可以真正帮助您理解为什么这些东西起作用。我上面提到的另外一些需要考虑的事情是:ASLR 和 GCC 上的堆栈粉碎保护。这些事情中的任何一个都会让你的一天变得沮丧。确保您已禁用 ASLR 和堆栈粉碎保护(在任何现代发行版中均默认启用)。

关于c - 为什么我的缓冲区溢出尝试会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9919766/

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