非常有意思的一道题,但这是我第一次写fsop的题,所以几乎都是看wp写的,看的是L.o.W师傅的wp,其次要感谢的文章还有unsorted bin的文章,还有raycp师傅的函数分析,才让我简单的了解了fsop
流程分析
add函数,没什么特别的
edit函数,可以造成堆溢出
show函数
思路
- 由于没有free函数,所以得通过house of orange,来达到leak libc的任务,首先申请一个chunk,由于edit函数具有heap溢出,所以可以修改top chunk的值,然后在申请一个比top chunk大的chunk,就可以把剩下的chunk放入unsorted bin中
- 在然后申请一个large bin,然后由于chunk没有被初始化,所以此时的fd bk是指向main_arena+0x88的,而fd_nextsize和bk_nextsize指向的是heap地址,所以我们可以leak heap和libc
- leak完heap和libc后,我们在通过edit heap溢出,来将unsorted bin中的bin变为small bin,这样unsorted bin会进入small bin中,我们再控制bk指针,指向我们的_IO_list_all指针,这样我们申请的chunk就会指向我们的_IO_list_all,并且_IO_list_all会指向main_arena里面的unsorted bin,这样就劫持了_IO_list_all即可getshell
过几天在来复现一遍写wp