CCTF-PWN1&&PWN3
PWN1比较有意思,在得到输入的数据后使用shutdown将标准输入,标准输出和标准错误关闭了读写功能的读。也就是不能进行交互了,要保证一次输入就能拿到flag。后来听joker师傅说可以用dl-resolve来做,有时间了准备试试。
题目可以进行信息泄露,所以我就单独写了一个信息泄露的脚步泄露出got里的函数地址,拿到这些函数地址后,在libc database里找到了libc哦!!我的思路是利用open,read,write函数打开flag文件,读到内存中,写到标准输出。现在open,read,write的libc内的偏移都知道了,就差Libc的基址了,我泄露了好几次Libc基址观察到变化不大,伙伴也告诉我ALSR只会让Libc地址的9比特发生变化,可以爆破。我就泄露了一个libc的基址,并以泄露的这个基址为Libc的基址加入代码中,期望着下次还能遇到这种情况。跑了1000多轮后,成功爆破,拿下flag。
PWN3是一个很基础的格式化字符串漏洞,泄漏出__libc_start_main_ret后发现和PWN1是一个Libc,感觉好舒服,修改got中puts函数为system,顺利拿到shell。