難得來解個水題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
偷吃步過了