寒假训练 houseoforange_hitcon_2016(7/250)

非常有意思的一道题,但这是我第一次写fsop的题,所以几乎都是看wp写的,看的是L.o.W师傅的wp,其次要感谢的文章还有unsorted bin的文章,还有raycp师傅的函数分析,才让我简单的了解了fsop

流程分析

add函数,没什么特别的

 edit函数,可以造成堆溢出

 show函数

 思路

  1. 由于没有free函数,所以得通过house of orange,来达到leak libc的任务,首先申请一个chunk,由于edit函数具有heap溢出,所以可以修改top chunk的值,然后在申请一个比top chunk大的chunk,就可以把剩下的chunk放入unsorted bin中
  2. 在然后申请一个large bin,然后由于chunk没有被初始化,所以此时的fd bk是指向main_arena+0x88的,而fd_nextsize和bk_nextsize指向的是heap地址,所以我们可以leak heap和libc
  3. 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

原文地址:https://www.cnblogs.com/pppyyyzzz/p/14296058.html