![]() |
1
5
你在描述一个 buffer overflow 是的,它们是软件中安全问题的主要来源。如果有人可以用任意数据重写程序代码,而该任意数据包含攻击者选择的可执行代码,那么他们基本上可以使用发生溢出的程序的特权级别执行机器代码。 当一个固定的存储量被分配给一个未知的输入量(从键盘、网络、API调用等)时,通常会发生这个问题,并且输入量大于存储量。在不在数组访问上执行边界检查的编程语言中,这可能导致代码的可执行区域被覆盖。像这样的技术 DEP 可以通过写保护内存的可执行区域来降低此风险。 |
![]() |
2
2
堆栈溢出也可能导致此问题。 |
![]() |
3
0
在非自动内存管理的语言中,这种情况并不少见。例如,A buffer overflow 是入侵的一个很好的例子。 有一些针对特定类型入侵的保护措施(例如,您通常会得到堆栈溢出,而不是遍历其他材料),但涉及到任何时间指针时,都很容易遍历您不希望访问的内存或代码。 像Java和C语言这样的语言不会让你在低水平上操控内存,所以风险就减轻了。 |
![]() |
4
0
“内存入侵”称为缓冲区或堆栈溢出。这可能是最重要的漏洞,您可以利用它来发现安全缺陷。 标准的C库中充满了一些函数,它们轻松地假设输入不会溢出分配的缓冲区空间。当输入 是 比缓冲区大的是,缓冲区溢出到内存的其他部分。程序不再正常工作,可能会以微妙的方式损坏。 |
![]() |
5
0
在C++中,数组不能无限期地增长。你没有无限的记忆。内存入侵可能是由以下原因引起的:
|
![]() |
Matt · 由于缓冲区溢出,程序未返回预期的pc注册表地址 7 年前 |
![]() |
Kevin Jones · 外壳代码缓冲区溢出-SegFault 7 年前 |
![]() |
w13rfed · 缓冲区溢出:NOP底座不工作[关闭] 8 年前 |
![]() |
Kingamere · gdb显示的地址与代码中的地址不同 9 年前 |
![]() |
ovrwngtvity · 动态内存分配不会导致缓冲区溢出?[副本] 10 年前 |
|
user2103885 · 利用缓冲区溢出时无法获取根shell 11 年前 |