堆喷射攻击如何工作?

时间:2010-11-05 23:31:36

标签: c++ c security exploit

我读过两篇关于堆喷涂的文章:Wikiepdiathis blog post。 我理解shell代码是如何引入程序的内存的。但是程序如何跳转/调用堆上的地址内存?

什么样的崩溃会调用堆?

这种攻击是否需要通过一种缓冲区溢出攻击来进行?

有没有像缓冲区溢出那样的黄金法则,即使用n版本的函数(strncpy代替strcpy)?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,

  

他们通常会利用这个优势   事实上这些堆块会   每个人大致在同一个地方   堆喷雾运行的时间。执行   流可以重定向到堆   通过缓冲区溢出或堆喷射   溢出缺陷。

他们在谈论这样的情况:

char buffer[10];
FuncPtr p;

当您读入buffer时,没有溢出保护,您可以直接写入p的内存位置。稍后,当您的代码尝试调用p时,它将跳转到攻击者希望它跳转的位置,可能是他们将可执行代码注入您的应用程序。

简单修复:不要使用静态缓冲区(更喜欢std::集合类)并始终检查溢出。