Michael Howard 在《安全开发生命周期》一书中写道:
以 Blaster 蠕虫利用的 Windows RPC/DCOM 中的编码错误为例(Microsoft 2003)。有缺陷的代码如下所示:
HRESULT GetMachineName(WCHAR *pwszPath, WCHAR wszMachineName[N + 1]) { LPWSTR pwszServerName = wszMachineName; while (*pwszPath != L'\\' ) *pwszServerName++ = *pwszPath++; ... }在此代码中,攻击者控制 pwszPath 参数,以便她可以溢出 wszMachineName 缓冲区。Microsoft 中可用的任何工具都没有发现此代码错误...
我之前实现了许多类似上述示例的代码,但我找不到任何错误,在测试上述代码后,我仍然找不到溢出的方法,wszMachineName但正如他所说,这段代码容易受到缓冲区溢出的影响。
所以我的问题是:攻击者如何像爆破蠕虫那样利用上述代码?!我通过了大量的“AAAA”来编程,但是它继续运行,没有崩溃或问题。