这道题和fastnote差不多,只是libc版本是2.23,2.23版本没有tcache,导致一定会从fastbin中malloc出那个地址,但是fastnote的malloc有一个对size域的检查(此为2.31版,同样会有这个检查,但由于tcache,所以绕过了)
所以要想办法伪造size域,ctfwiki中介绍了这个方法,叫字节错位,Fastbin Attack – CTF Wiki (ctf-wiki.org)
不过在实现时我发现free hook不知道为啥不太行,就用malloc hook,用malloc hook一般是填上onegadgap的地址,但是他们的使用对于rsp有一定要求,于是就有了一个方法叫realloc抬栈,原因是realloc hook紧邻malloc hook,并且realloc有一段很长的对栈的操作,可以比较精准的控制栈,思路大概就是这样,exp如下: