2018 HCTF the_end 第一次学习,简单记录一下思路 程序流程 程序会让你先输入一个地址,在往这个地址里面输入值 看了wiki上面说,exit执行时,会遍历_IO_list_all,然后调用_IO_2_1_stdout_下的vtable中_setbuf函数 所以我们可以hook _setbuf这个函数 不过在wiki看到了这个公式,这里的off_set_3其实意思是自己设置...
buuoj-pwn-hctf2018_the_end buuoj-pwn-hctf2018_the_end总结lb = ELF(...)使用 重温了一遍攻击exit指针,还有如何找__libc_atexit虽然改不了反弹shell重定向 详细看这个 exec 1>&0_luooofan的博客-CSDN博客_exec1 除此之外,还有以下重定向:sh...
babyprintf_var2 先看一下保护措施,由于有FORTIFY,而且libc的版本是2.27,所以不能使用格式化字符串的思路,而且出题人故意给栈上填充了很多数据,所以不能使用格式化字符串的思路来leak地址或者修改内存。 所以这题目和the_end一样,考察对_IO_FILE的利用 在main()函数中,现将stdout的虚表指针取出来,后面判断,如果不...
35d3f80· Nov 12, 2018 History3 Commits misc-eazy_dump pwn-Christmas pwn-heapstorm_zero pwn-the_end readme.md Repository files navigation README HCTF 2018 (part)这是我第二次参与HCTF的出题和策划,这次一共出了4道题,如下。详细见文件,下面是简要思路解释。Pwn - the end (46 solves)这...
2018 HCTF the_end 1.题目描述 只有任意5字节地址写入可用, 且给了libc基址.除了canary保护全开 2.思路 写入2字节修改vtable指向别的可写可读处. 写入3字节修改某函数为one_gadget 知识点: exit中会调用setbuf,因此将setbuf改为one-gadget. exp: frompwnimport*context.log_level="debug"libc=ELF("/lib/x86_...
<buffer>: 0x0000000000000000 0x0000000000000000 然后此时在续表附近寻找一个fake_vtable,需满足以下条件:fake_vtable_addr + 0x58 = libc_base + off_set_3 其中0x58根据下表查处是set_buf在虚表的偏移void * funcs[] = { 1 NULL, // "extra word" 2 NULL, // DUMMY 3 exit, // finish 4 ...
因为glibc是2.23的,没有vtable的检查,因此修改函数表不会引起程序的错误。 查看exit函数的源码,exit中存在一条函数调用链,exit->__run_exit_handlers->_IO_cleanup->_IO_flush_all_lockp。看到最后这个_IO_flush_all_lockp就感觉应该可以利用这一点拿shell。这个函数里关键的源码是: ...