文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>WINDOWS的RPC溢出问题

WINDOWS的RPC溢出问题

时间:2010-12-29  来源:袁哥

WINDOWS的RPC参数反序列化(应该叫散集吧?)对输入缺少检查,很容易造成缓冲区溢出

.

 

比如调用GetInfoForName,其IDL描述如下:

 

 

[helpstring("method GetInfoForName")]

HRESULT GetInfoForName

(

[in, string] const unsigned char * szVarName,

[in, out, unique, size_is(cchBuffer)] unsigned char * pchBuffer,

[in] DWORD cchBuffer,

[out] DWORD * pcchRequired

 

);

 

 

缓冲pchBuffer是输入和输出参数,其大小是参数cchBuffer的值,比如cchBuffer=8,RPC会传递pchBuffer的长度8还有内容,而cchBuffer是另一个参数,RPC同样会传递.

 

在RPC服务方,RPC的参数反序列化程序会解码出pchBuffer,检测其长度合法性,同样解码出另一个参数cchBuffer,解码出的cchBuffer和pchBuffer没有一点关联检测.

 

 

如果我们在RPC的参数序列化过程中伪造比较小的cchBuffer,而pchBuffer设置比较大,就会导致RPC服务程序得到错误的pchBuffe大小限制cchBuffer,而往里面拷贝过多的数据,造成缓冲区溢出.因为RPC是申请堆存放参数,pchBuffe在堆里面,所以会是堆溢出.

 

 

标签分类:

相关阅读 更多 +
排行榜 更多 +
哥布林弹球b服手游下载

哥布林弹球b服手游下载

休闲益智 下载
小马样式盒游戏下载

小马样式盒游戏下载

休闲益智 下载
异变小镇中文版下载安装

异变小镇中文版下载安装

冒险解谜 下载