首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找堆栈缓冲区溢出

查找堆栈缓冲区溢出
EN

Stack Overflow用户
提问于 2015-04-24 13:18:26
回答 1查看 7.8K关注 0票数 7

我读过5篇关于堆栈缓冲区溢出和堆溢出的论文/文章和2段视频。我编写了一个易受攻击的程序,并利用它,在端口7777上运行了一个易受攻击的服务器,溢出并利用了这个漏洞。但我不明白的是如何在Windows (或其他操作系统)或软件中查找漏洞。我使用gcc和gdb进行调试,以找到编写该漏洞所需的所有内容。如何在其他程序/软件上发现堆栈缓冲区溢出漏洞,以及如何调试易受攻击的程序,或者如何使用gdb?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 17:39:12

有两种查找堆栈缓冲区溢出的主要方法:

黑匣子测试--测试应用程序是否存在堆栈溢出漏洞的关键--提供了与预期相比过大的输入数据。然而,将应用程序置于任意大的数据中是不够的。有必要检查应用程序的执行流和响应,以确定是否确实触发了溢出。因此,查找和验证堆栈溢出所需的步骤是将调试器附加到目标应用程序或进程,为应用程序生成格式错误的输入,使应用程序接受格式错误的输入,并检查调试器中的响应。调试器允许测试人员在触发漏洞时查看执行流和寄存器状态。

灰盒测试手动检查代码(解压缩)。在检查堆栈溢出代码时,建议搜索对不安全库函数(如get()、strcpy()、strcat() )的调用,这些函数不验证源字符串的长度,并且盲目地将数据复制到固定大小的缓冲区中。除了手动检查堆栈溢出的代码外,静态代码分析工具也有很大的帮助。虽然它们往往会产生大量的假阳性,并且很难找到一小部分缺陷,但它们确实有助于减少查找低挂水果(如strcpy()和sprintf() bug)所带来的开销。各种工具,如老鼠,Flawfinder和ITS4都可以用来分析C风格的语言.

用于这些测试的最好工具是: OllyDbg和static (用于静态和动态调试)。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29848577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档