平台上的mahoshojyo(魔法少女)
mahoshojyo
预分析
用 checksec
检查一下保护,发现 got
表可写,除此之外保护全开。
查看libc版本,是2.23版本。由于本程序是 C++
编写,所以还需要一些其他的库(这里花了我好长时间):
1 |
|
这里选择直接上国内源下载 ubuntu16.04
对应的库(或者直接docker)
此外,这个版本的libc没有tcache机制。
逆向程序
发现是一个常规的笔记程序,没有越界读写,但是有 UAF 漏洞。
1 |
|
此外,我们发现每一次 malloc
的大小都是固定 0x60
,无法设定大小。
思路
可以先用uaf漏洞泄露堆上的地址,再进行堆块重叠,控制某个chunk头,改变其size大小,使之free后进入unsorted bin,从而泄露libc地址 (main_arena+88==__malloc_hook+0x10
),之后得知再利用fastbin attack控制 __malloc_hook
(fake chunk的地址为 __malloc_hook-0x23
,以符合fastbin的大小),将onegadget写入hook位置,再用 malloc
触发即可 getshell
平台上的mahoshojyo(魔法少女)
https://dx3906999.github.io/2025/03/05/ucas-ctf-pwn-mahoshojyo/