OGEEK CTF
前言
前几天的OGEEK CTF,中间有事就没打了,hub是常规题但是由于自己理解不到位没做出来,0 day manager很像之前TSCTF打AWD的那种逻辑很复杂的题目,也是没找到漏洞最后看17学长wp才知道的。。读代码真的是又慢又没耐心又不仔细的我
babyrop
exp.py
1 | #coding=utf-8 |
book manager
1 | #coding=utf-8 |
hub
漏洞利用
输入的index可以是负数,存在double free,这里一次只能覆写8个字节,卡在次数不够多次覆写stdout,看e3pem大佬的exp才知道一是没有PIE的情况下可以通过bss上的stdout和stderr劫持方式去分配到stdout,二是只修改stdout的flag字段及write_base即可泄露libc,下面的exp为大佬的exp。
1 | __int64 __fastcall main_func(char *a1) |
e3pem.py
1 | #coding=utf-8 |
0day manager
漏洞分析
题目可以分配不同类型的chunk,这里的Handle在for循环的free之后有一个while循环,当num不为0的时候会执行v14 = (_QWORD *)*v14;
得到0之后会清空上次释放的堆地址,否则还是将原地址赋给相应位置,从而下次Handlle Double Free,注意calloc用的是_int_malloc而不是_libc_malloc,因此不会用Tcache的机制分配,最后利用的是fastbin。
1 | _QWORD *Handle() |
17.py
1 | from pwn import * |