This is what I have so far as code:
=begin
Timed Challenge #1
[HBH: Learn how hackers break in, and how to keep them out.]
RULE: You have 1 second to retrieve/submit this!
GOAL: 1. Decrypt the following random string: a2UpYDkyYjhyLCRebCFneA==
2. Answer like this:
/challenges/timed/timed/index.php?b64=decryptedString
=end
require ‘net/http’
require ‘socket’
require ‘base64’
The web server
host = ‘www.hellboundhackers.org’
Default HTTP port
port = 80
The file we want
path = “/challenges/timed/timed1/index.php”
This is the HTTP request we send to fetch a file
request = “GET #{path} HTTP/1.0\r\n\r\n”
Connect to server
socket = TCPSocket.open(host,port)
Send request
socket.print(request)
Read complete response
response = socket.read
Split response at first blank line into headers and body
headers,body = response.split(“\r\n\r\n”, 2)
print body
The encryted message to work on
if(body =~ /\w*==/)
encoded = $1;
end
Decryption of Base64 string value
decoded = Base64.decode64(encoded)
pre-answer = ‘/challenges/timed/timed1/index.php?b64=’+decoded
answer = “Get #{pre-answer} HTTP/1.0\r\n\r\n”
Submit the decrypted text to “/challenges/timed/timed1/index.php?b64=”
socket.print(answer)
response = socket.read
Split response at first blank line into headers and body
headers,body = response.split(“\r\n\r\n”, 2)
print body
I am stuck on using login data before submitting anything. I know how to
do this in PHP’s cURL library, but not with Ruby.
Any help would be greatly appreciated. No spoiler either. I like to work
for the answer. I would not want to ruin it for my brain.