小技巧
64位情况下,各个bins的分配方案 - tcachebins:大小小于0x420,里面没有被填满(7个) - fastbins:tcachebins被填满,大小小于等于0x80 - 上述都不符合,填入unsortedbins中
当寄存器都是0的时候,执行syscall,rcx会被赋值,从而泄漏libc
在不加入tcachebins和fastbins的情况下直接加入到ub中
- 一般直接申请一个0x420更大的就行了,不过有的题会限制大小,那么采用下面的方法
- 在堆上构造一个0x420或以上的堆块,然后利用UAF让chunk指向这个伪造的堆块,最后进行delete把这个堆块free掉,就可以到unsortedbin,这里
- 通过改tcache_perthread_struct然后把tcache_perthread_struct给free掉