本帖最后由 BeneficialWeb 于 2019-4-2 22:45 编辑
工具:VMMWare vs2017, WinDbgPrew,PCHunter64
平台:win7x64虚拟机
声明:本次实验是基于周壑大佬的视频自学而成。
[C] 纯文本查看 复制代码 #include<stdlib.h>
#include<stdio.h>
#include<Windows.h>
extern VOID IdtEntry(ULONG64, ULONG64);
extern VOID go();
UINT64 g_tmp;
void main()
{
// eq fffff800`00b95280 4000ee00`001010F0
// eq fffff800`00b95288 00000001
if (IdtEntry != 0x1400010E0)
{
printf("error address:%p\n", IdtEntry);
system("pause");
exit(-1);
}
go();
printf("%p\n", g_tmp);
system("pause");
}
[Asm] 纯文本查看 复制代码 .data
EXTERN g_tmp:DQ
.code
IdtEntry PROC
mov rax,[-8796080877440]
mov g_tmp,rax
iretq
IdtEntry ENDP
go PROC
int 20h
ret
go ENDP
END
1.构造中断向量号20
2. 效果
3.读取高地址中的内容,提权成功。
|