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。