天天看点

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

(这是我真正意义上的完完全全自己做的第一道堆题目,虽然花了快三个小时,谨以此篇纪念一下)

题目的例行检查我就不放了,将程序放入ida中

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

 程序的逻辑十分简单,漏洞也非常明显

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

 重点是这个程序没有给我们show函数,所以第一时间想到了爆破stdout和house of force这俩方法,但是house of force需要溢出去修改topchunk,所以这个题目使用爆破io_stdout来做

这道题的思路是将chunk在unsorted bin中释放去获得aren的值,要注意因为程序开启得alsr 但是地址得后三位是固定得,所以我们要通过修改aren得值为 _IO_2_1_stdout_-0x43的值 通过爆破一个字节去申请到该位置

我通过在chunk里面嵌套chunk去修改aren的值 然后当我们修改了io_stdout这块位置的值后会打印出libc的值,我们就可以往malloc_hook的值覆盖为one_gadget的值去拿到shell

完整exp如下:

 (吐槽一下index由自己选择的这种题目是真的麻烦,做了半天给我自己都搞的有点小迷惑)