介绍
国赛2019的一道题,之前使用partial overwrite做的,后面发现还可以利用_IO_FILE
进行泄漏,这样就可以100%成功了。
分析程序
见之前的博客,其实就是一个double free。
利用方式
我们可以利用double free去攻击_IO_2_1_stdout_
结构体,从而泄漏libc地址。
结构体如下,我们需要做的是
_flags
为原来的值_IO_read_end
要等于_IO_write_base
_IO_write_base
为要输出的地方- 不能修改
_IO_write_ptr
1 | # pwndbg> p *(_IO_FILE *)0x7f22c9b43760 |
泄漏了地址后就很好做了,修改_free_hook
为system地址,free(“/bin/sh”)即可getshell
脚本
1 | #!/usr/bin/env python2 |