hitcon_2018_children_tcache(off by null)


拿到题目例行检查

(我就不放了)

将程序放入ida中

 很明显的堆的题目,然后我们进入add函数

 可以看到将s复制到dest里面,说明存在off by null 漏洞

这道题目我也上网查询了师傅们的wp(我没想通咋打)

漏洞利用思路: 首先我们先创建三个chunk

 chunk3是为了防止chunk2的向下合并,,当我们0和1(表示index的顺序)free掉的时候 我们可以通过申请1去修改2的pre_size 使得2向上面合并,然后我们再将1释放掉,这样012就合并了 然后我们继续申请一个0大小的chunk,这个chunk会从合并的chunk分出来

但是我们可以通过show(0)去泄露出来libc的基址,这样我们就可以获得one_gadget了

最后我们申请一个0x68的chunk,然后将0和2都释放掉(1就是被free掉的chunk)在申请一个chunk

 可以看到这个chunk的fd是我们输入的值,

 我们就可以通过这个chunk在malloc_hook的位置写上one_gadget ,因为add的时候当使用malloc的时候就会触发malloc_hook,所以我们需要手动的去获得shell

完整exp:

 

 成功的获得flag

 结束,加油!!

相关