这个漏洞触发于fastbin上
触发的原因在于fastbin释放的时候并不处理pre_inuse位
而且free的时候只校验main_area指向的fastbin第一个节点
所以可以这样利用
malloc(A)
malloc(B)
free(A)
free(B)
free(A)
这样导致了main_area → A → B → A → B…
利用方式:
申请A,然后修改A的fd(因为此时fd在用户区里
然后链表就会变成了main_area → B → A → target
依次申请内存区块就好了
注意fastbin申请的时候会校验在fastbin里面的pre_inuse位需要为1