BUU-rootersctf_2019_heaaaappppp-WP
此题的起名吸引了我去做它。题目不难,不过之前从来没有做过 Tcache dup
类的利用,也算是学习了新知识(考虑到这和 fastbin double free
相比除了简单不少之外没有什么区别,其实还是只做了一道水题)。题目有给我一定的困扰,也有考虑放弃去找 WP,但是没找到,就只能自己做了,结果做了出来。这个故事我觉得以后做题还是要更加坚持。

BUU-sleepyHolder_hitcon_2016-WP
不得不说 hitcon 2016 那场比赛的堆题是真的都很牛叉,让我学到了很多东西。这道题和同场比赛中的 secret_holder 有在总体流程上几乎一样,但是利用方式不同。
这个程序除了 double free 之外是没有漏洞的,如何利用这个 double free 呢?之前那道 secret_holder 是通过类似 chunk overlapping 的方法实现 UAF 然后 unlink
的,但是本题的 huge chunk 只能申请一次,然后就完全无法操作了。那么如何实现类似的 UAF 呢?方法比较巧妙,我也很遗憾自己没有想出来。利用的是 malloc_consolidate
函数,我们知道 ptmalloc 在处理 big request 的时候,遍历到 large bin 的时候,会先调用 malloc_consolidate
函数整理碎片,这个时候会把 fastbin 中所有的 bin 先尝试合并,然后放到其对应的 bin 中。而本题可以申请一次 huge chunk,就有了触发 malloc_consolidate
的机会。我们的解法就是申请一个 small secret,再申请一个 big secret,两个 chunk 分别记作 A,B,先 free
掉 A,然后申请 huge secret,在 malloc_consolidate
后,A,本来属于 fastbin,就被收入了 smallbin,其下一个 chunk,也就是 B 的 prev_inuse
位被置为零。
HgameFINAL-nohook-WP
Final 就做出这一道,第二道 webpwn 确实不太会,花了很长时间才搞出环境,最后无时间了。语神和我说出这个题也没想让我们做出来,感到一丝恶意和一丝释然。Hgame 到这里也正式结束了,总结就不写了。
…