“Blaster”蠕虫是如何触发缓冲区溢出的?

信息安全 缓冲区溢出
2021-09-10 02:10:48

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”来编程,但是它继续运行,没有崩溃或问题。

1个回答

如果您有控制权,pwszPath那么您可以传递一个非常大的字符串以超出缓冲区。

我不知道还能说什么。