---
# System prepended metadata

title: x-sixty-what-200pt
tags: [picoCTF, Binary, 從零開始的 picoCTF, picoCTF2022]

---

# 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` 