Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
堆上的IO,largbin高版本的利用
堆上的IO,largbin高版本的利用浅析Large_bins_attack在高低版本的利用large bin attack - DAMOXILAI - 博客园 ● exit()的IO调用链└─ __run_exit_handlers└─ 遍历 atexit 回调链表└─ _IO_cleanup() [libc初始化时注册的ef_cxa回调]└─ _IO_flush_all_lockp(1) for (fp = _IO_list_all; fp != NULL; fp = fp->_chain) │ ├─ 条件1: _IO_flockfile(fp) │ → fp->_lock == NULL ? 跳锁 : 加锁 │ ├─ 条件2(分支A): _mode <= 0 && _IO_write_ptr > _IO_write_base │ 条件2(分支B): _mode > 0 && _wide_data-...
stdout(高版本libc的io利用)
stdout(高版本glibc)ida: 开局直接就可以了bss处储存的_IO_2_1_stdout_的地址,libc基址就直接有了,且读入的fb就是这里bss段存了stdout结构的地址,且下面有puts的调用 漏洞:puts的调用会调用vtable中的xsputn,伪造vtable为另外合法的vtable,因为在高版本不能直接改写vtable了,再利用io_wfile_jumps->….seekoff->_IO_switch_to_wget_mode来跳转system ….seekoff可以在本地gdb里面打印出来,得到偏移,在seekoff里面想要调用上面调用链的最后一个还需要让elf结构中的write_ptr大于write_base 进入到wget后的关键调用就是_IO_wdoallocbuf的调用,这里也有检查,要求_wide_data大于IO_buf_base处,其关键调用链:_wide_data->wide_vtable->doallocate(fd) 接下来就是在原vtable写入合法vtable,seekoff的偏移位置...
