TWCTF-2019

2019-09-02

難得來解個水題XDD

warmup

光這一題就讓我吃了不少苦…各種local端能跑remote就失敗

來說說解題過程吧,這一題給了 source code 和 ELF

光看 code 就知道他有 buffer overflow 和 format string attack 的問題了吧

這一提我自己寫了兩種 exploit code, 一個是 ret2libc, 一個是透過 leak libc address 用 format string 改寫成 system address

先說 ret2libc

透過 source code 可以知道他可以被 overflow

我們先 leak libc address

阿…第9行請忽略他,因為這是我解出來後才開始寫 write up, 所以我已經知道他的 libc 是哪個版本了

總之執行後他就會給你兩個 libc address

然後用 libc_database 查他是哪個版本的 libc

有libc版本後就是很正規的 ret2libc 然後拿shell囉

實測在local端跑得起來,remote 端會 EOF QQ

於是我用第二個方法——用format string 改寫

結果還是一樣在local端跑得起來遠端會 EOF @@

那時候還想說是不是因為 RBP 被我蓋爛了所以 system 吃不到我 gets 輸入的參數,但想了想如果真是這樣,我的 local 端應該也跑不起來才對

總之試了試最後用 one_gadget 偷吃步過了