# x-sixty-what-200pt [題目在這](https://play.picoctf.org/practice/challenge/319?originalEvent=70&page=4) ## 題意 ![](https://i.imgur.com/iI0uBjo.png) ## 解題思路 一樣先用 gdb 跑,然後塞入字串看多少字符會 overflow ![](https://i.imgur.com/AdkeddM.png) 停在 $rip,但是這個暫存器不是我們要的,我們要 $rsp 也就是指向 stack 頂端的 pointer ![](https://i.imgur.com/rwehpfA.png) 所以要用 72 個 A 去塞爆他 ![](https://i.imgur.com/wWcOpfc.png) 接著 ```disass flag```,好像是因為 x64 的關係不能讓他跳到 endbr64,要到 mov rbp, rsp 那個記憶體位置 ![](https://i.imgur.com/aZzi8kk.png) 將這一串字串塞入就可以啦 ![](https://i.imgur.com/mUAOfGJ.png) 成功啦 ![](https://i.imgur.com/20IfWnc.png) ## 方法二 endbr64 不是沒辦法過去,只是需要藉由任意一個 $ret ,在 return 時到我們希望他去的位置 ![](https://i.imgur.com/3delIn6.png) ![](https://i.imgur.com/fLQT0z6.png) ![](https://i.imgur.com/BUgQ4v9.png) 又學到一個方法了 ![](https://i.imgur.com/iylH9mo.png) ## 困難之處 啊不知道為什麼地端的塞入沒跑出 flag,害我搞超久 == 要好好複習 register Orz Date : 2023/04/28 ###### tags: `picoCTF2022` `Binary` [`從零開始的 picoCTF`](https://hackmd.io/-KQeDuzrQMOcFNhwU_5eKA?both=) `picoCTF`