首先盲目测试一下,发现switch后进行delete,仍然可以show,可以用来进行地址泄漏
审计到此处时发现很奇怪,调试得知sub_4838是获取message的个数
添加超出0x64个message时,会发现终端多输出了一个”Delete”字符串,通过gdb调试发现多余0x64的message会被free,但是指针仍然被保存存在UAF,此时再去delete整个username,会释放掉username下的所有message,造成double free使得程序崩溃。
存在UAF,可以构造fastbin 的double free,通过message将目标地址连接到fastbin中时,偶然发现fastbin会被整理到tcache中,这样就更加方便申请到目标地址处了,直接打free_hook