我正在尝试了解堆溢出,以解决我必须解决的利用挑战。其中。即使我写了堆管理器使用的指针(位于每个缓冲区的末尾),当缓冲区为HeapFree()d时也不会引发异常。难道不应该引发例外吗?如何进一步检查?

谢谢

评论

您能否向问题中添加更多信息,例如platform / os(我知道是Windows,但哪个),使用的编译器,源代码...

哈哈,真抱歉。我在禁用DEP的Windows XP SP3上运行它。我没有源代码,因为我应该利用该程序。不知道使用了哪个编译器(无法从字符串中分辨出来)。我正在使用ollydbg进行调试-这可能是没有抛出异常的原因吗?另一方面,olly也什么也没抓住。

告诉我们您要向其发送的程序和代码。根据文本,我们看不到您覆盖的内容,等等。这么长的答案很短:“需要更多信息”,只是说:“ area51.stackexchange.com/proposals/58554/exploit-development”

#1 楼

AFAIR Windows XP不一定会因堆损坏而崩溃,您需要专门使用gflags.exe(通过调试工具)启用此行为。

gflags /p /full /enable foo.exe
另外,请参见http://support.microsoft.com/kb/286470

无论如何,利用的目的不是使进程崩溃,而是让它运行代码,因此您不必担心为什么它不会崩溃。