87得票2回答
gcc -D_FORTIFY_SOURCE=1 和 -D_FORTIFY_SOURCE=2 之间的区别是什么?

有人能指出gcc -D_FORTIFY_SOURCE=1和-D_FORTIFY_SOURCE=2之间的区别吗?我猜=2更安全?我还没有找到一个逐点列出差异的列表。 我也读到过-D_FORTIFY_SOURCE=2应该与-O2一起使用,否则不会有所有功能可用。同样,在这里我没有找到一个详细说明...

55得票8回答
缓冲区溢出在使用gdb时有效,但不使用gdb无效。

我正在使用 CentOS 6.4 32 位系统,尝试在一个程序中引发缓冲区溢出。在 GDB 中它可以工作。这是输出:[root@localhost bufferoverflow]# gdb stack GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60...

35得票5回答
如何触发缓冲区溢出?

我得到了一个作业任务,要求使用缓冲区溢出来调用一个函数而不需要显式地调用它。代码基本上是这样的:#include <stdio.h> #include <stdlib.h> void g() { printf("now inside g()!\n"); } ...

32得票12回答
什么是缓冲区溢出,如何引发它?

我听说过缓冲区溢出,想知道如何引发它。 有人能展示一个小的缓冲区溢出例子吗?还有它们被用于什么?

17得票2回答
我能欺骗libc (GLIBC_2.13)加载它没有的符号(来自GLIBC_2.15)吗?

在尝试在Debian上运行"Steam for Linux"时,我遇到了一个问题。 libcef(Chromium嵌入式框架)与GLIBC_2.13(Debian测试版中的eglibc可以提供)配合良好,但需要从GLIBC_2.15中获得一个麻烦的额外函数(这是eglibc无法提供的):$ r...

15得票7回答
sprintf函数的缓冲区溢出?

{ char buf[8]; sprintf(buf,"AAAA%3s","XXXXXXXX"); printf("%s\n",buf); } 会发生什么? 缓冲区有8个字符的空间,只剩下3个自由字符...

13得票4回答
如何防止memcpy缓冲区溢出?

在一个程序中,有一些固定大小的二进制缓冲区用于存储数据,并使用 memcpy 将缓冲区从一个复制到另一个。由于源缓冲区可能比目标缓冲区大,因此如何检测是否存在缓冲区溢出?

12得票2回答
使用fgets导致缓冲区溢出问题

我正在尝试利用缓冲区溢出,通过使用fgets函数输入特定数据来覆盖堆栈的返回地址。 以下是代码:void foo() { fprintf(stderr, "You did it.\n"); } void bar() { char buf[20]; puts("Inp...

10得票1回答
调用‘__wmemcpy_chk_warn’: “wmemcpy使用的长度大于目标缓冲区大小”

我有这段代码(让我们称之为problem.cpp): #include <string> using str = std::wstring; static str foo(str text = str()) { text.resize(4); return te...

10得票4回答
GCC如何检测堆栈缓冲区溢出问题

在gcc中有一个选项-fstack-protector-strong用于检测堆栈破坏。然而,它并不能始终检测到堆栈缓冲区溢出。对于第一个函数func,当我输入一个10个字符以上的字符串时,程序并不总是崩溃。我的问题是有没有一种方法可以检测堆栈缓冲区溢出。void func() { ch...