【我的 PWN 学习手札】
文章平均质量分 80
Mr_Fmnwon
湖南の大学网络工程童鞋一枚,努力养成看博客写博客的习惯。
展开
-
【我的 PWN 学习手札】tcache stash unlink
tcache stashing unlink atttack 主要利用的是 calloc 函数会绕过 tcache 从smallbin 里取出 chunk 的特性。并且 smallbin 分配后,同大小的空闲块挂进会 tcache。攻击可实现两个效果:1、任意地址上写一个较大的数(和unsortedbin attack 类似)2、任意地址分配chunk原创 2024-10-04 23:42:58 · 773 阅读 · 0 评论 -
【我的 PWN 学习手札】fastbin reverse into tcache —— tcache key 绕过
之前提到过,较高版本的 glibc,设置了 key 对 tcachebin 内的 double free 进行了检查。除了前面几篇手札罗列的绕过方法,今天又遇到一个,特此记录。之前利用 fastbin 来进行绕过,参见而此次总结的,也是利用 tcache stash 的机制。话不多说,进入主题。首先申请释放14个chunk然后申请一个,让 tcachebin 空出一个位置接着利用 double free,再次释放 chunk8。原创 2024-09-24 00:52:08 · 443 阅读 · 0 评论 -
【我的 PWN 学习手札】House of Botcake —— tcache key 绕过
我们知道,自对 tcachebin 添加了 key 进行了 double free 检查后,利用起来薛微有些困难。double free 绕过检查机制,实则是因为释放时会检查 tcachebin 对应 size 的所有 free chunk。那么如果第二次 free 的 chunk 落入到其他 tcachebin,或者 fastbin,就可以实现绕过。【我的 PWN 学习手札】House of Karui —— tcache key 绕过手法-CSDN博客。原创 2024-09-23 21:34:11 · 485 阅读 · 0 评论 -
【我的 PWN 学习手札】tcache stash with fastbin double free —— tcache key 绕过
tcache key 的引入使得 tcache dup 利用出现了困难。除了简单利用 UAF 覆写 key 或者之外,还可以利用 ptmalloc 中的其他机制进行绕过。原创 2024-09-21 22:04:43 · 1065 阅读 · 0 评论 -
【我的 PWN 学习手札】House of Karui —— tcache key 绕过
早期版本的 tcachebin 由于毫无保护,导致攻击利用非常容易,成为重灾区。tcache dup,也即 tcachebin 中的 double free 利用手法,是攻击者常常选用的攻击方式。然而,在glibc-2.29开始,添加了对 tcache key,对 double free 进行了检查。本篇介绍的 House of Karui 即是一种非常简单的通过溢出来实现绕过,造成double free的方法。原创 2024-09-21 20:21:38 · 549 阅读 · 0 评论 -
【我的 PWN 学习手札】tcache extend
tcache 在释放分配时,没有对 chunk 的 size 进行安全检查,导致可以利用溢出实现扩大的溢出写。能够结合 tcache poisoning 实现任意地址 malloc 进行攻击。原创 2024-09-21 13:16:07 · 523 阅读 · 0 评论 -
【我的 PWN 学习手札】劫持 tcache_perthread_struct
tcache 是 glibc 2.26 (ubuntu 17.10) 之后引入的一种技术,目的是提升堆管理的性能,与 fast bin 类似。tcache 引入了两个新的结构体, tcache_entry 和 tcache_perthread_struct。原创 2024-09-19 15:06:40 · 387 阅读 · 0 评论 -
【我的 PWN 学习手札】Tcache dup
Tcache dup,实际上是 tcache 的 double free,能达到 UAF 的效果,实现。原创 2024-09-19 10:11:57 · 307 阅读 · 0 评论 -
【我的 PWN 学习手札】Tcache Poisoning
早期对于 Tcachebin 的引入,在提高分配释放效率的同时,也因毫无保护而变得尤为好攻击和利用。自 glibc-2.32 以后添加了 key 等保护机制,现在的 tcachebin 利用起来变得困难。不过本篇讨论的还是早期的 tcachebin,能够简单地通过 UAF 实现任意地址 malloc。原创 2024-09-19 09:22:08 · 564 阅读 · 0 评论 -
【我的 PWN 学习手札】Largebin Attack(<= glibc-2.38可利用)
早期的 Largebin Attack,通过修改 largebin 中 free chunk 的 bk 和 bk_nextsize 指针域,能够实现任意地址写堆地址。然而在 glibc >= version2.30 后,增加了安全检查,释放大于 largebin 中最大 chunk 的情况来实现利用已很难实现。而释放小于 largebin 中最小 chunk 的插入分支,并没有安全检查,依旧可以实现利用,但是只能通过 bk_nextsize 来实现单个地址的写入堆地址。原创 2024-09-19 02:10:50 · 502 阅读 · 0 评论 -
【我的 PWN 学习手札】Largebin Attack(< glibc-2.30)
Largebin 与 smallbin unsortedbin 在组织结构上,除了通过 fd 和 bk 字段的双向链表组织,还存在fd_nextsize 和 bk_nextsize 字段。因此,当进行 free 或者 malloc 时,这些字段有着与此前不同的写逻辑。largebin attack 就是利用 largebin 的这一组织特性进行利用的。原创 2024-09-18 18:37:00 · 784 阅读 · 0 评论 -
【我的 PWN 学习手札】Unsortedbin Attack
Unsortedbin Attack不能说是一种getshell的方式,而只能说是一种利用手法。在glibc2.28之前有效,条件是存在uaf,效果是能在某一地址写一个大数(glibc上的一个地址)。原创 2024-09-16 22:51:37 · 605 阅读 · 0 评论 -
【我的 PWN 学习手札】Fastbin Double Free
Fastbin的Double Free实际上还是利用其特性产生UAF的效果,使得可以进行。与简单的UAF下的FastbinAttack相比,可以在没有edit,仅能add时写的情境下实现攻击原创 2024-09-14 19:18:00 · 563 阅读 · 0 评论 -
【我的 PWN 学习手札】Fastbin Attack
Fastbin Attack主要是利用了Fastbin单链表管理,如果能够利用UAF等漏洞,将Fastbin链表上的free chunk的fd写数据,即可实现任意地址分配,进而实现任意地址读写 本篇涉及到的保护机制只有一个:取出的fastbin chunk,size应该在对应取出的fastbin范围内 二、利用手法(1)分配到任意地址(__malloc_hook周边)通过修改free chunk的fd指针造成分配到任意地址, 需要满足size条件。通过任意地址写来利用getshell,劫持ho原创 2024-09-13 21:42:25 · 701 阅读 · 0 评论 -
【我的 PWN 学习手札】Unlink Attack
在除了fastbin、tcachebin的其他空闲堆块的管理bin中,如shortbin、largebin、unsortedbin,内部组织都是双向链表。如下图(示意图来自好好说话之unlink-CSDN博客当需要将second_chunk脱链时,使用unlink对second_chunk操作。不难看出,实际上是这样一个过程:我的上一个的下一个=我的下一个,我的下一个的上一个=我的上一个这样“我”就可以取出,因为链上已经没有指针指向“我”,即所谓的脱链。原创 2024-09-13 18:06:40 · 1243 阅读 · 0 评论 -
【我的 PWN 学习手札】Unsortedbin Leak
main_arena 是一个 struct malloc_state 类型的全局变量,是 ptmalloc 管理主分配区的唯一实例。说到全局变量,立马可以想到他会被分配在 .data 或者 .bss 等段上,那么如果我们有进程所使用的 libc 的 .so 文件的话,我们就可以获得 main_arena 与 libc 基地址的偏移,从而获取 libc的基地址。由于 unsorted bin 是双向链表,因此在 unsorted bin 链表中必有一个节点的 fd 指针会指向main原创 2024-09-12 20:33:13 · 968 阅读 · 0 评论