平台上的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/