house of orange

house of orange

本次笔记基于看雪
看雪CTF.TSRC 2018 团队赛 第十四题

  • 这个东西好像在新版的libc.so中不太好用,不过有点意思记录下吧。
    house of orange

house of orange

1.分配一个堆块
2.溢出topchunk修改size
3.申请超出size的堆,topchunk进入unsorted bin。
4.申请小于size的堆,old_top分为两块。
5.
house of orange

pwn HCTF2017 babyprintf

house of orange
house of orange
house of orange
_IO_flush_all_lockp函数会刷新_IO_list_all 链表中所有项的文件流,相当于对每个 FILE 调用 fflush,
通过检查
(fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base)或者 (_IO_vtable_offset (fp) == 0 && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base) )
调用 _IO_OVERFLOW

可以利用其中的 _IO_str_finsh和_IO_str_overflow这两个函数_IO_str_overflow (_IO_FILE fp, int c)
因为调用(char
)fp+0xE8和(char*)fp + 0xE0,所以可以把这部分设置成system的地址。