我安装了旧版Apache(1.3.x),我想手动检查它是否容易受到缓冲区溢出的影响。我可以简单地发送一些get / post请求,如下所示吗?
http://127.0.0.1/uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
“u”部分会是1000个字符还是更多?如果服务器易受攻击(至少在“主要”实现中......),它应该冻结吗?
希望它不会完全崩溃,一旦我重新开始,一切都会好起来的吗?我知道我也可以查看源代码。说到这一点,有趣的是我只是注意到大多数Apache的文件都是在1994年由一个名叫McCool的人写的(他声称他不能在评论中编程......)。我想当时的缓冲区溢出闻所未闻。
答案 0 :(得分:2)
我不认为有一种很好的通用方法来测试缓冲区溢出,因为在不同的地方它会以不同的方式影响你的程序,其中一些是显而易见的,另一些则不是。
在这样的项目中寻找类似的东西时,对代码的理解以及一个称职的测试团队总是有益的。
答案 1 :(得分:0)
实际上,它会崩溃并不是那么明显。
在我工作的地方,我们引入了许多逐个错误,导致未被注意的缓冲区溢出。当一个特定的程序崩溃时我们注意到了它,但有时候我们的软件看似很好。
答案 2 :(得分:0)
您可能希望了解的是fuzz testing和code coverage。
Fuzz测试实际上就是你的建议:向界面发送垃圾,看看是否有“有趣”的事情发生。不幸的是,“有趣”的定义不明确。缓冲区溢出可能会导致有趣的错误,如“500内部服务器错误”,Java堆栈跟踪或乱码垃圾输出。在最坏的情况下,缓冲区溢出可能会使整个HTTP服务器进程失效,尽管可能不会立即发生。
代码覆盖部分是您如何转动地毯式轰炸模糊测试方法并使其外科手术。代码覆盖率分析让您在发送不同输入时查看源代码的哪些部分,这样您就可以确保触摸所有内容。这需要很多技巧,努力和动力。不幸的是,坏人有这三种倾向。