HEVD学习笔记目录:
HEVD学习笔记之概述
HEVD学习笔记之缓冲区溢出攻击
HEVD学习笔记之任意地址写入
HEVD学习笔记之UAF
HEVD学习笔记之整数溢出漏洞
HEVD学习笔记之空指针引用
HEVD学习笔记之未初始化栈变量
HEVD学习笔记之非换页内存池溢出漏洞
HEVD作为一个优秀的内核漏洞靶场受到大家的喜欢,靶场地址 HackSysExtremeVulnerableDriver。这里选择x86的驱动来进行黑盒测试学习内核漏洞,作为学习笔记记录下来。
实验环境:
装载驱动以后首先使用WinDbg查看驱动的内容
驱动装载的地址是0x98C78000,DriverEntry的地址是0x98CC00EA,所以DriverEntry的偏移地址是0x480EA。IRP_MJ_DEVICE_CONTROL的分发函数偏移地址0x44064。
使用IDA对驱动进行分析,可以看到在DriverEntry首先是创建了设备对象
随后就是对分发函数的赋值以及符号链接的创建
而根据IDA识别的结果就可以得知符号名,根据符号名就可以完成和驱动的连接与通信
而在DispatchIoCtrl中,程序将IoControlCode取出减去0x222003以后得到下标,在用这个下标从Index_Table中取出函数地址表的下标。在根据这个地址表的下标从Func_Table中获得函数地址以后跳转到该函数执行
而这两张表的内容如下,其中的FuncTable中的每一个地址都代表了不同的漏洞
如果取出的函数地址表的下标是0x1C,那么对应的就是最后一个跳转地址,也就是loc_4444AD。而这个地址中的代码是在告知用户,发送的IOCTL是不合法的IOCTL
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
Zero~ IRP_MJ_DEVICE_CONTROL的分发函数偏移地址应该是0x44064