我一直在阅读有关缓冲区溢出漏洞的信息,并且我理解了这个概念(我了解堆栈,覆盖返回地址,shell代码,NOP等)
所有youtube上的漏洞利用示例,在文章中,在书中均指的是存储在本地的程序,因此您可以检查exe文件还是开放源代码。
我的问题是:黑客如何知道对远程应用程序(即软件)进行攻击的可能性,并且他/她可以开始发送恶意字符串?他/她如何发现漏洞?
答案 0 :(得分:0)
这实际上取决于攻击情形。通常在安全性方面,您假定攻击者了解有关系统/安全性的所有信息(除了您的机密(即加密密钥)之外)。假设您正在攻击开源应用程序。然后,该软件的代码将为大家所熟知。另一种情况可能是封闭源软件。然后,您必须对程序进行反向工程(一旦获得),以了解其逻辑。
有很多方法可以获取目标软件的样本。以某种技术方式或通过社会工程来获得目标计划的样本几乎是不可能的。
答案 1 :(得分:0)
当您没有可用的源代码时,缓冲区溢出攻击通常是由fuzzing发现的。模糊测试是向系统发送无效,随机或有意过大的数据以查看其行为的一种做法。您想作为攻击者看到的是崩溃而不是错误。对于远程系统,崩溃通常看起来像是500 HTTP响应代码。这表明您的数据使系统处于未定义状态。有了它,您就可以开始制作攻击以利用该未定义状态。
这是考虑避免使用400到500范围内的有用返回码的原因,对于任何可能的错误,可能仅返回裸露的“ 400-发生错误”。在某些高安全性系统中,针对每个可能的问题,我都返回了404错误。这给调试带来了难以置信的痛苦,但使自动扫描更具挑战性。我一般不建议使用这种方法,但是在更高安全性的系统中应该考虑一下。