# buffer overflow 1-200pt [題目在這](https://play.picoctf.org/practice/challenge/258?originalEvent=70&page=3) ## 題意 ![](https://i.imgur.com/HnHfvDn.png) ## 解題思路 首先先看看他給的 code,可以知道我們要使用 buffer overflow,讓 ret 的 memeory address 變成 win() 的 memory address ![](https://i.imgur.com/Pmo0oYl.png) 在開始之前,自己寫個 flag.txt,等等測試如果成功應該要吐出這個檔案的內容 ![](https://i.imgur.com/gLIhv5S.png) 接著用 gbd 打開檔案,用 patter create 100 建立 100 個字母,然後 ```r``` 執行塞入那 100 個字母 ![](https://i.imgur.com/0gc6CAP.png) 根據結果可以知道 overflow 在 ```0x6161616c(laaa)``` ![](https://i.imgur.com/RFCfpTY.png) 用 ```pattern search 0x6161616c``` 可以知道,需要塞入 44 個 char,然後下 ```x win``` 找出 win() 的位置在 ```0x80491f6``` ![](https://i.imgur.com/6HyOxfR.png) 用 python pwn套件中的 p32() 將 0x80491f6 轉為字符 ![](https://i.imgur.com/lWnGaZS.png) 然後將 44 個字符和 win() 的 address,喔吼,我們測試的 flag 吐出來啦 ![](https://i.imgur.com/pYckrmM.png) OVO ![](https://i.imgur.com/bdoyDup.png) ## 困難之處 學習 C 語言,還有 pwn 真好玩 Date : 2023/04/27 ###### tags: `picoCTF2022` `Binary` [`從零開始的 picoCTF`](https://hackmd.io/-KQeDuzrQMOcFNhwU_5eKA?both=) `picoCTF`