gpt4 book ai didi

c - 缓冲区溢出 - 程序以信号 SIGSEGV 终止

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

我正在学习缓冲区溢出利用。我写了一个这样的易受攻击的程序:

#include <stdio.h>
#include <string.h>

main(int argc, char *argv[])
{
char buffer[80];
strcpy(buffer, argv[1]);
return 1;
}

非常简单的程序。这个想法是覆盖用于返回 libc 函数 start_main 的返回地址。一切顺利,我使用 GDB 验证返回地址是否被指向内存中 shellcode 的正确地址覆盖。

但是当我想得到一个 shell 时,会出现:

程序收到信号 SIGSEGV,段错误。 0xbffff178 在 ?? ()

0xbffff178 是返回覆盖的返回地址,它确实指向 shellcode 我很确定。有帮助吗?

最佳答案

您可能有一个非执行堆栈,它禁止从某些地址范围执行代码。您需要使用 -z execstack 进行编译以强制堆栈可执行。

关于c - 缓冲区溢出 - 程序以信号 SIGSEGV 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055993/

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