2024ciscn-PWN复现

orange_cat_diary
漏洞分析
主代码逻辑还是一样的菜单堆,而且只是Glibc2.23的堆题目,保护全开,下面来看看各个部分的实现:
- add
1 | __int64 add() |
- delete
1 | __int64 sub_D83() |
- show
1 | __int64 sub_DE9() |
- edit
1 | __int64 edit() |
- 下面来简单分析一下漏洞在哪
首先在
delete
里面有一个uaf,edit
里面可以溢出修改,show
可以泄露libc,但是delete和show都只有一次机会,按照常规的操作,malloc(0x80),然后free->show,获得libc的地址,但这样我们后面就无法继续操作了。像这样的有uaf且保护全开,我们可以打
fastbin Arbitrary
,错位构造mallo_hook
之上0x23的地方为fake_chunk,然后改malloc_hook,但是这里需要用到一次free,但是free已经用掉了,没机会了,所以泄露libc的方式要改一改,不能用free。
arbitrary文章可看:http://downbeat.top/2024/09/03/0ctf-2017-babyheap-fastbin-attack/
- 不用free,但其实我们可以用
House of orange
里面的一点知识
edit允许我们溢出修改0x8字节的数据,若是malloc(0xn8),我们可以溢出修改 topchunk的size,将改size改为比0x1000小的数字,然后再次malloc(0x1000),此时会更新topchunk,旧的topchunk会进入unsortedbin中,其fd指针是指向 main_arena-88
的地址,再次malloc切分unsortedbin,此时的chunk的fd指针将是一个与libc的基地址有着固定偏移的地址,因此我们也就不用free 就获得了libc的地址。然后正常打 Arbitrary alloc
即可。
但是topchunk有一个检查:
1 | (old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0) |
简单来说,top chunk的size要大于等于MINSIZE,top chunk的结束地址必须是页对其的,top chunk相邻的前一个chunk必须处于inuse状态。
修改topchunk的size的时候要保证末三字节相同(页对其)
调试分析
1 | add(0x18) |
- 如下,旧的topchunk进入了unsortedbin中
- 再次malloc,该chunk与libc的基地址有个固定的偏移
- 然后就是正常的 Arbitraty alloc打法了,就不分析了,将malloc_hook改为ogg即可
EXP
1 | from pwn import * |
note
华中赛区半决赛note
glibc2.31的简单堆
附件:通过网盘分享的文件:ciscn2024_华中赛区
链接: https://pan.baidu.com/s/14ijY8nZHGMI4y-a9XN3Z_Q?pwd=down 提取码: down
漏洞分析
- add
可以申请很多chunk,对size限制在0xFFF里面
1 | unsigned __int64 sub_1290() |
- edit
正常的改,倒是也没有什么漏洞点
1 | unsigned __int64 sub_13D1() |
- free
很明显的UAF漏洞
1 | unsigned __int64 sub_150A() |
- show
正常的show功能
1 | unsigned __int64 sub_15CC() |
- 分析:
由于没有对size很大的限制,并且还有UAF,我们填满tcache之后直接free一个chunk进入unsortedbin之后show出来即可,就可以泄露libc了,然后修改free_hook为ogg即可
调试分析
1 | for _ in range(10): |
填满tcache之后进入unsortedbin,直接show出来即可
然后修改fd为__free_hook,两次malloc直接将free_hook-0x10当作chunk,free_hook为user_data,直接改free_hook为system即可:
EXP
1 | from pwn import * |
- 标题: 2024ciscn-PWN复现
- 作者: D0wnBe@t
- 创建于 : 2025-03-07 13:37:54
- 更新于 : 2025-03-13 13:58:29
- 链接: http://downbeat.top/2025/03/07/2024ciscn-PWN复现/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。