能力值:
( LV2,RANK:10 )
|
-
-
26 楼
这种漏洞这么挖出来的?
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
先谢谢Vsbat大大分享了, 最近拜读了这篇关于1767的afd漏洞的利用那篇文章,我有以下几点疑惑,如果方便,希望你不吝解答
1)我用的测试机的环境是在win7 x86,内核版本是6.1.7601,是没有打1767的补丁,然后我运行你的程序,发现并没有利用成功,我执行的时候是管理员权限,弹出来的cmd同样也是管理员权限,而非是system,我进一步在你程序的shellcode中添加了一个int3,然后编译运行,发现同样没有导致BSOD。 2)在你的exploit中,我看你是利用CreateIoCompletionPort和ZwCreateWorkerFactory这两个函数来达到UAF的,对于这两个函数如何能正好分配到释放掉的那块内存的虚拟地址,我不是太清楚,希望你能解答一下
3)这篇利用,主要讲的是从double free到UAF,再到write what where的这么一个过程,double free到UAF这个过程我能看明白,但是从UAF到write what where我就不是很明白了,在这个过程中UAF到底充当了什么个角色?只是为了使double free避免BSOD?
|
能力值:
( LV7,RANK:150 )
|
-
-
28 楼
|
能力值:
( LV6,RANK:90 )
|
-
-
29 楼
纯情小生
先谢谢Vsbat大大分享了, 最近拜读了这篇关于1767的afd漏洞的利用那篇文章,我有以下几点疑惑,如果方便,希望你不吝解答
1)我用的测试机的环境是在 ...
15年的回复不知道兄弟还在不在看雪,第一个问题由于我没调试没法回答,对于第二个问题,需要看一下windows的内存管理机制,和linux很像,在pool释放掉以后,会产生一个内存空洞,当再有pool申请的时候,win会优先分配符合条件,也就是大小相等的pool,打个比方,我释放掉一个0x60大小的pool之后,如果我申请一个0x58大小的空间,会优先占用0x60的这个pool,从而减少碎片,如果没有相等大小的,则会去找比自己大的,再没有则开辟一个新的内存空间。第三,从double free到uaf是为了达成www或者其他利用的一个过程,单纯的double free是没法code execution的,可以理解为光有free是不够的,因为win不像linux有unlink这么好用的宏,必须要有use,而从uaf到www是要从double free来看,当第一次free之后,我们可以占用free掉的内存空洞,而此时win还认为这是原来的对象,占用后第二次free时会把我们占用的对象free掉,这时候我们可以用第三次可控的对象占用,之后调用一些特殊的函数,比如作者提到的NtEaQuery等等,而这类函数往往是对我们第二次占用的对象的成员操作,但这里由于double free,第二次对象已经被释放了,第三次我们是用可控的对象,从而利用特殊的函数里的代码来达到www
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
|
|
|