-
-
[求助] 关于堆喷(堆块合并失败)的问题
-
发表于:
2019-12-23 21:29
2944
-
就是有一个漏洞是这样的
Adobe 内核代码 js代码
| |
| |
| --callback-> |
| |
在Adobe内核代码会触发一个用户回调, 然后在JS代码处会释放它(释放的大小是0xb0). 所以为了利用它. 我需要控制这个0xb0的内存块.
---- 0xb0大小内存块
+ 0x0 vtable - 第一个dword处会去存放一个vTable, 我需要控制这个vTable
--- 0xb0大小内存块
如果直接用U32Arr来喷的话, 前面会有一个头部, 所以我没办法控制vTable
. 所以我改了下我的思路.
在Callback的时候, 我把0xb0
内存块相连的部分也给Free了. 这样的话就变成这样.
b0(busy) b0(free) b0(漏洞free的) b0(busy) b0(free) b0(free).
这样堆块合并之后有了一个 0xb0*2 + 8(_HEAP_ENTRY) = 0x168
的内存块. 这样我在用0x168
的内存块重新占用这个内存, 就可以完全控制那个内存块的内容了
.
但是当我去观察的时候, 我发现虽然两个相连的内存块是Free
的, 但是并没有得到合并...
07808508 0017 0017 [00] 07808510 000b0 - (busy)
078085c0 0017 0017 [00] 078085c8 000b0 - (free)
07808678 0017 0017 [00] 07808680 000b0 - (free)
07808730 0017 0017 [00] 07808738 000b0 - (busy)
078087e8 0017 0017 [00] 078087f0 000b0 - (free)
078088a0 0017 0017 [00] 078088a8 000b0 - (free)
07808958 0017 0017 [00] 07808960 000b0 - (busy)
07808a10 0017 0017 [00] 07808a18 000b0 - (free)
07808ac8 0017 0017 [00] 07808ad0 000b0 - (free)
07808b80 0017 0017 [00] 07808b88 000b0 - (busy)
07808c38 0017 0017 [00] 07808c40 000b0 - (free)
07808cf0 0017 0017 [00] 07808cf8 000b0 - (free)
07808da8 0017 0017 [00] 07808db0 000b0 - (busy)
07808e60 0017 0017 [00] 07808e68 000b0 - (free)
07808f18 0017 0017 [00] 07808f20 000b0 - (free)
07808fd0 0017 0017 [00] 07808fd8 000b0 - (busy)
07809088 0017 0017 [00] 07809090 000b0 - (free)
07809140 0017 0017 [00] 07809148 000b0 - (free)
078091f8 0017 0017 [00] 07809200 000b0 - (busy)
078092b0 0017 0017 [00] 078092b8 000b0 - (free)
请问有师傅知道为什么和解决思路么. 感激不尽.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!