2018 HCTF the_end

第一次学习,简单记录一下思路

程序流程

程序会让你先输入一个地址,在往这个地址里面输入值

 看了wiki上面说,exit执行时,会遍历_IO_list_all,然后调用_IO_2_1_stdout_ 下的vtable中_setbuf函数

所以我们可以hook _setbuf这个函数

不过在wiki看到了这个公式,这里的off_set_3其实意思是自己设置偏移,也就是要自己在libc里面找到一个地址

 漏洞利用

  1. 首先找到_IO_FILE_plus,然后修改vtable这个指针,由于每次只能修改1个字节,所以要在周围找到fake_vtable
  2. 然后一个字节一个字节的修改到自己的fake_vtable,再将fake_vtable偏移0x58的位置设置为one_gadget值,接着在调用exit的时候就会调用one_gadget

最近几天准备忙完课设,来填坑,顺便把这个的调试在这几天调试一下

原文地址:https://www.cnblogs.com/pppyyyzzz/p/14062917.html