/img/avatar.gif

Wings

Pwn Ptmalloc2 Unsortbin Attack

原理如未特殊说明, 均假定 libc 2.23, 64 位. 当 malloc 从 unsortbin 中取 chunk 时, 会有一个双向链表解链的过程 (为方便, 代码只截取数据结构部分): 1 2 3 4 5 victim = unsorted_chunks (av)->bk; bck = victim->bk; /*

Pwn Ptmalloc2 Chunk at __malloc_hook Nearby

原理堆题的最后一步攻击手段, 有一个就是覆盖各种 hook, 其中就包括 __malloc_hook. 如果我们无法控制程序恰好写入到此处, 但是可以修改 chunk 的 fd 或者 bk, 达到 尝试任意地址分配

Pwn Ptmalloc2 Unsortbin Leak Libc

原理如未特殊说明, 均假定 libc 2.23, 64 位. UnsortbinUnsortbin 就是 malloc state 中的 bins[1], 相关定义如下: 1 2 3 4 5 6 7 8 9 10 11 struct malloc_state { /* Normal bins packed as described above */ mchunkptr bins[NBINS * 2 - 2]; }; /* The otherwise unindexable 1-bin is used to hold

Pwn Ptmalloc2 Fastbin Double Free

原理如未特殊说明, 均假定 libc 2.23, 64 位. FastbinFastbin 是 Ptmalloc2 的一种堆管理机制. 设计的目的在于分配内存时, 快速利用已有的合适 chunk. 大小小于 0x80 的 chunk free 后会被放在对应的 fastbin 中