gpt4 book ai didi

c++ - 在 Macbook Pro 上实现 clang -fno-stack-protector 编译代码时出现问题

转载 作者:行者123 更新时间:2023-11-30 20:49:55 25 4
gpt4 key购买 nike

我正在尝试测试缓冲区溢出示例。

下面是我尝试使用文件名 buffOVF.c 进行编译的代码:

#include <stdlib.h>
#include <string.h>

int main(void)
{
//stack corruption
char buf2[16] = "overwriteme";
//slightly less than 16 bytes but it doesn't matter
char buf1[16];
//uninitialized

strcpy(buf1, "1234567890123456789");
//buffer contains 16 bytes, I've input 19 (overflow of 4 due to null ptr at end of string)
//writing to buf1

printf("buf1 val: %s\n", buf1);
printf("buf2 val: %s\n", buf2);
printf("buf1 addr: %p\n", (void *)buf1);
printf("buf2 addr: %p\n", (void *)buf2);

// TO RUN : gcc -o bufferOVF. bufferOVF.c -fno-stack-protector && clear && ./bufferOVF.


return 0;
}

我尝试使用以下命令在 OSX 10.14 的 Macbook Pro 上编译它:

clang -o buffOVF。 buffOVF.c -fno-stack-protector

现在我尝试在没有堆栈保护的情况下运行此程序,以便我可以看到溢出的发生。但是,当我不断将其作为输出时,这种情况不会发生:中止陷阱:6

为什么会发生这种情况?我做了很多研究,但找不到任何可以解决这个特定问题的方法。

最佳答案

Why might this be happening?

发生这种情况是因为,呃,你溢出了缓冲区!

这正是您想要观察的:当缓冲区溢出时会发生什么。

结果可能会有所不同,就像未定义行为的情况一样。

停止缓冲区溢出。

关于c++ - 在 Macbook Pro 上实现 clang -fno-stack-protector 编译代码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548757/

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