文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
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在堆里面,所以会是堆溢出.

 

 

标签分类:

相关阅读 更多 +
排行榜 更多 +
僵尸运行3d城市逃生

僵尸运行3d城市逃生

冒险解谜 下载
顶尖猎人罗迪和凯茜

顶尖猎人罗迪和凯茜

冒险解谜 下载
火柴人飞爪忍者

火柴人飞爪忍者

冒险解谜 下载