#!/usr/bin/env python3 from pwn import * import subprocess def start(argv=[], *a, **kw): if args.GDB: # Set GDBscript below return gdb.debug([exe] + argv, gdbscript=gdbscript, *a, **kw) elif args.REMOTE: # ('server', 'port') return remote(sys.argv[1], sys.argv[2], *a, **kw) else: # Run locally return process([exe] + argv, *a, **kw) """ notes: """ gdbscript = "" breakpoints = [ # 'breakrva 0xoffset', "continue" ] for s in breakpoints: gdbscript += s + "\n" exe = "./vuln" elf = context.binary = ELF(exe, checksec=False) # context.log_level = 'info' # use DEBUG in args for debugging. LOG_LEVEL=warn/info/error for anything else """ if args.REMOTE: libc = ELF('./libc.so.6', checksec=False) else: libc = ELF('/usr/lib/x86_64-linux-gnu/libc.so.6', checksec=False) """ # =========================================================== # EXPLOIT GOES HERE # =========================================================== offset = 0 io = start() payload = flat({offset: []}) io.sendlineafter(b">", payload) io.interactive()