暴风影音是国内一款相当流行的万能播放器 http://www.baofeng.com/ clsid:BD103B2B-30FB-4F1E-8C17-D8F6AADBCC05 C:\Program Files\StormII\Config.dll Sub SetAttributeValue ( ByVal lpQueryStr As String , ByVal bstrAttributeName As String , ByVal lpValueStr As String ) 当参数lpQueryStr是一个超长字符串时,发生栈溢出,利用堆填充技术,攻击者可以很轻松的利用此漏洞执行任意代码 分析: .text:10009A4C push ebp .text:10009A4D mov ebp, esp .text:10009A4F sub esp, 208h ; 开辟208h的堆栈空间 .text:10009A55 cmp [ebp+Source], 0 ; 判断参数1是否为空 .text:10009A59 jz short loc_10009AA8 .text:10009A5B cmp [ebp+arg_C], 0 ; 判断参数3是否为空 .text:10009A5F jz short loc_10009AA8 .text:10009A61 push [ebp+Source] ; 参数1 .text:10009A64 lea eax, [ebp+String] .text:10009A6A push eax ; eax正好指向ebp-208h的堆栈区域 .text:10009A6B call ds:wcscpy ; oh,my god,不进行参数合法性检查,直接开始拷贝操作, .text:10009A6B ; 哦豁了,eax指向的堆栈区域全部被超长非法参数占领了-_-! .text:10009A71 pop ecx .text:10009A72 lea eax, [ebp+String] .text:10009A78 pop ecx .text:10009A79 push [ebp+arg_8] .text:10009A7C push offset String ; "/@" .text:10009A81 push offset aSS...
暴风影音是国内一款相当流行的万能播放器 http://www.baofeng.com/ clsid:BD103B2B-30FB-4F1E-8C17-D8F6AADBCC05 C:\Program Files\StormII\Config.dll Sub SetAttributeValue ( ByVal lpQueryStr As String , ByVal bstrAttributeName As String , ByVal lpValueStr As String ) 当参数lpQueryStr是一个超长字符串时,发生栈溢出,利用堆填充技术,攻击者可以很轻松的利用此漏洞执行任意代码 分析: .text:10009A4C push ebp .text:10009A4D mov ebp, esp .text:10009A4F sub esp, 208h ; 开辟208h的堆栈空间 .text:10009A55 cmp [ebp+Source], 0 ; 判断参数1是否为空 .text:10009A59 jz short loc_10009AA8 .text:10009A5B cmp [ebp+arg_C], 0 ; 判断参数3是否为空 .text:10009A5F jz short loc_10009AA8 .text:10009A61 push [ebp+Source] ; 参数1 .text:10009A64 lea eax, [ebp+String] .text:10009A6A push eax ; eax正好指向ebp-208h的堆栈区域 .text:10009A6B call ds:wcscpy ; oh,my god,不进行参数合法性检查,直接开始拷贝操作, .text:10009A6B ; 哦豁了,eax指向的堆栈区域全部被超长非法参数占领了-_-! .text:10009A71 pop ecx .text:10009A72 lea eax, [ebp+String] .text:10009A78 pop ecx .text:10009A79 push [ebp+arg_8] .text:10009A7C push offset String ; "/@" .text:10009A81 push offset aSS ; "%s%s" .text:10009A86 push eax ; String .text:10009A87 call ds:swprintf ; 上面的拷贝直接影响到这里的swprintf,相当于再对eax指向的堆栈进行一次拷贝操作 ; 没有上边的拷贝,这里也要出问题 .text:10009A8D add esp, 10h .text:10009A90 lea eax, [ebp+String] .text:10009A96 push [ebp+arg_C] .text:10009A99 push eax .text:10009A9A call sub_10001201 .text:10009A9F mov ecx, eax .text:10009AA1 call sub_1000CC9A .text:10009AA6 jmp short locret_10009AAD .text:10009AA8 ; --------------------------------------------------------------------------- .text:10009AA8 .text:10009AA8 loc_10009AA8: ; CODE XREF: sub_10009A4C+D j .text:10009AA8 ; sub_10009A4C+13 j .text:10009AA8 mov eax, 80004005h .text:10009AAD .text:10009AAD locret_10009AAD: ; CODE XREF: sub_10009A4C+5A j .text:10009AAD leave .text:10009AAE retn 10h ; 就这样返回,哦豁了 ModLoad: 41f50000 41fc7000 C:\WINDOWS\system32\mshtmled.dll ModLoad: 10000000 10020000 C:\Program Files\StormII\Config.dll ModLoad: 63380000 633f8000 C:\WINDOWS\system32\jscript.dll (eec.ee8): Illegal instruction - code c000001d (first chance) (eec.ee8): Illegal instruction - code c000001d (!!! second chance !!!) eax=80004005 ebx=100116b0 ecx=0175f998 edx=00030001 esi=0039fe98 edi=00000000 eip=00410061 esp=0175f5ec ebp=00410041 iopl=0 nv up ei pl nz ac po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000212 *** ERROR: Module load completed but symbols could not be loaded for C:\Program Files\Internet Explorer\IEXPLORE.EXE IEXPLORE+0x10061: 00410061 ff ??? 暴风影音2009 <=[3.09.04.17] 在厂商没有推出相应的补丁之前, 建议用户通过注册表对相应的CLSID:BD103B2B-30FB-4F1E-8C17-D8F6AADBCC05设置Killbit 或者将以下文本保存为.REG文件并导入: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{BD103B2B-30FB-4F1E-8C17-D8F6AADBCC05}] "Compatibility Flags"=dword:00000400