免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > Win2003活动目录堆溢出漏洞分析(5)

Win2003活动目录堆溢出漏洞分析(5)

时间:2011-11-06 13:53来源:未知 整理:寂涯网络 点击:


f9373b24 83e103          and     ecx,3
f9373b27 f3a4            rep movs byte ptr es:[edi],byte ptr [esi] ;复制宽
字符不含 00 到errorLogEntry的 String处
f9373b29 8d0c00          lea     ecx,[eax+eax]
f9373b2c 014d14          add     dword ptr [ebp+14h],ecx ;将指针指向下一
处字符串
f9373b2f 8b4d14          mov     ecx,dword ptr [ebp+14h]
f9373b32 66832100        and     word ptr [ecx],0  ;增加"\x00\x00"结尾
   存储错误宽字符串的空间大小只有70h,除去一个字符串的大小后,后面会加上”0x00
0x00”补充,如果说第一个字符串的大小小于70h则会复制第二个字符串(大小会减去之前
复制的),否则就不会复制。但是错误代码在于,假设说我们首先构造一个“正常的”数据
包,大小为 54个字节(54 个’A’),其复制在宽字符串中为54(字符串个数)*2(宽字符的
大小)+2(两个空格)=110(6Eh),如果执行代码段:
 
 f9373b11 d1e8   shr    eax,1
f9373b13 48     dec    eax
f9373b14 85c0   test    eax,eax
f9373b16 7639   jbe    mrxsmb!BowserWriteErrorLogEntry+0x1a5 (f9373b51)
    所以说,70h(112)-6Eh(110)=2,在右移一位(相当于除以2)正好为1,减去 1 就是0,
此后判读条件通过就跳出复制的循环。
  但是,如果我们是构造的55 个字符串呢?就会出现112-(55*2+2)=0,这个时候再除以
2 减去 1就会出现-1 的情况,这时jbe是判断其不跳转,等同于任由错误的代码继续,再接
下来的汇编代码中,就会发生复制错误,蓝屏就是发生在执行复制数据的代码中:

f9373b18 8d0c00       lea      ecx,[eax+eax] 
f9373b1b 8bd1         mov     edx,ecx
f9373b1d c1e902       shr      ecx,2
f9373b20 f3a5         rep movs dword ptr es:[edi],dword ptr [esi]

  这么看来,要修补该漏洞的最简单办法有两个,其中之一就是将jbe 逻辑判断改为jl,
另外就是将137和138 端口关闭(事实上好多漏洞都是出自于这两个端口)。通过这个漏洞,
也学习到,有关错误记录方面的函数(如IopAllocateErrorLogEntry),可能会对长度大小
有一定的限制,在其它代码判断不严的情况下,也是产生漏洞的一个诱因。
  另外我也是才接触漏洞分析,文中难免纰漏,希望大家斧正。

本页地址 http://www.jybase.net/xitonganquan/20111106574.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com