23得票1回答
当一个控件的类名非常长时,为什么会出现访问冲突?

我创建了一个控件的子类,以添加一些所需的字段,但是现在当我在运行时创建它时,会出现“访问冲突”的错误。不幸的是,这个访问冲突并不发生在我创建控件的地方,即使我使用了所有调试选项(包括“使用调试 DCU 进行构建”),堆栈跟踪也无法帮助我! 为了重现这个错误,我尝试创建一个控制台应用程序,但显...

16得票3回答
“printf("%s", argv[1]);”这行代码的内存漏洞应该描述为堆栈溢出吗?

今天,我在Elance.com上参加了一次短暂的"C++技能测试"。其中一个问题如下: 什么是以下代码行的安全漏洞: printf("%s", argv[1]); 选项1:格式化字符串 选项2:堆栈溢出 堆栈溢出的标准定义: 在软件中,当堆栈指针超过堆栈边界时,就会发生堆栈溢出。调用...

9得票6回答
缓冲区溢出攻击的预防技术是什么?

如何预防缓冲区溢出攻击?我听说过Stackguard,但是仅仅应用Stackguard技术是否完全解决了这个问题? 作为一名经验丰富的程序员,你认为为何为缓冲区溢出攻击提供足够的防御措施如此困难? 编辑:感谢所有回答并保持安全标签活跃 :)

58得票3回答
地址检查器:地址上的堆缓冲区溢出问题

我正在学习C语言的入门阶段。 我正在尝试编写一个函数来打开文件,读取BUFFER_SIZE个字符,将内容存储在数组中,然后跟踪字符'\n'(因为我想获取输入的每一行)。 当我将BUFFER_SIZE设置得非常大时,我可以获得第一行。 当我将BUFFER_SIZE设置得相对较小(比如42),...

8得票4回答
使用缓冲区溢出执行Shell代码

最近我一直在学习计算机安全,遇到了一些问题,特别是这个问题让我有些困扰。 我需要溢出一个带有固定缓冲区的函数,以便在文件shellcode中执行shellcode。这个函数非常简单: void vuln(char *str) { char buf[64]; strcpy(b...

8得票1回答
解释这段不显式调用函数的代码是如何运行的?

下面代码的输出为“溢出”,但我并没有显式调用func函数。它是如何工作的? #include<stdio.h> #include<string.h> #include<stdlib.h> int copy(char *input) { char ...

12得票4回答
如何在C语言中进行缓冲区溢出时跳过一行

我想在C语言中跳过一行,在主要部分使用缓冲区溢出技术跳过x=1;这一行;然而,尽管我从<main+35>到<main+42>计算了7个字节,但我不知道为什么我无法跳过从4002f4地址到下一个地址4002fb。 我还在Debian和AMD环境下配置了随机化和execs...

19得票5回答
缓冲区溢出如何用于攻击计算机?

缓冲区溢出如何被用来攻击计算机? 通过引起栈或堆溢出,一个人如何能够执行任意代码? 我理解程序内存的一部分被覆盖了,但我不明白这怎么会导致一个人执行自己的代码。此外,第三方恶意代码必须是用目标处理器的汇编语言编写的吗?

12得票5回答
如何确定已分配的C缓冲区的大小?

我有一个缓冲区,并且想要进行测试,以查看缓冲区是否具有足够的容量,即找出我可以添加到该缓冲区的元素数量。char *buffer = (char *)malloc(sizeof(char) * 10); 执行以下操作:int numElements = sizeof(buffer); 不返回...

8得票3回答
缓冲区溢出攻击:为什么“jmp esp”需要位于DLL中?

我试图理解经典的缓冲区溢出漏洞,即输入缓冲区覆盖堆栈、保存在堆栈上的函数返回地址和上部内存区域(通常用于放置shell代码)的情况。互联网上有许多这方面的例子,我认为我已经理解得很好了: 1. 输入数据超过开发人员设定的固定大小的输入缓冲区。 2. 溢出的输入将覆盖堆栈上调用函数的函数参数和...