gpt4 book ai didi

c - 在 Mac os 10.6 上执行简单的缓冲区溢出

转载 作者:太空狗 更新时间:2023-10-29 15:10:03 24 4
gpt4 key购买 nike

我正在尝试了解堆栈溢出并编写一个简单的代码来利用堆栈。但不知何故,它根本不起作用,只在我的机器上显示中止陷阱(mac os leopard)

我想 Mac OS 对待溢出的方式不同,它不允许我通过 C 代码覆盖内存。例如,

strcpy(buffer, input) // lets say char buffer[6] but input is 7 bytes 

在 Linux 机器上,此代码成功覆盖下一个堆栈,但在 mac os 上被阻止(中止陷阱)

有人知道如何在 mac 机器上执行简单的堆栈溢出吗?

最佳答案

@joveha's answer是正确的,使用 GCC,您必须使用 -fno-stack-protector 进行编译关闭缓冲区溢出保护。

但是,您还需要禁用 FORTIFY_SOURCE选项,否则如果您尝试使用类似 strcpy 的缓冲区溢出,您将得到“中止陷阱”或 memcpy .

要禁用它,只需使用标志 -D_FORTIFY_SOURCE=0 进行编译即可,例如:

gcc -g -fno-stack-protector -D_FORTIFY_SOURCE=0 -o overflow overflow.c

来源:Turning off buffer overflow protections in GCC .

关于c - 在 Mac os 10.6 上执行简单的缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026361/

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