WeChall --- "Training: Programming 1 "

今回は、wechallの問題を解こうと思います。
今回は、programmingの問題でTraining: Programming 1 というものをときます。
まず、ページに行くとこのようになっています。
f:id:eyesjapan:20150124212302p:plain
この英語を意訳しますと、リンクに飛べと書いていてその後にそこで表示されたメッセージをhttp://www.wechall.net/challenge/training/programming1/index.php?answer=メッセージ
という感じに、変更して、 1.337 秒以内にそこにアクセスしなさいという感じです。
今回の問題に関しては、手動では間に合わないためexploitを書こうと思います
まずは、メッセージを取ってくるところからやります。

import urllib2
url  = "http://www.wechall.net/challenge/training/programming1/index.php?action=request"
responce = urllib2.urlopen(url)
print responce.read()

こんな感じで書いてみました。これでアクセスできたと思ったら、レスポンスがこのように返ってきました。
Please login by sending your cookies in the HTTP Header.
これをみて、あーセッションの維持が必要なのかと思いました。んで、結構考えた結果
今回は、pythonのmechanizeというライブラリを使ってとこうと思いました。
それで書いたコードがこれです。

import mechanize
br = mechanize.Browser()
#br.set_debug_http(True)
br.set_handle_robots(False)
br.open("http://www.wechall.net/login")
br.select_form(nr = 0)
br["username"]="自分のユーザーネーム"
br["password"]="自分のパスワード"
br.submit()
br.set_handle_robots(False)
br.open("http://www.wechall.net/challenge/training/programming1/index.php?action=request")
response = br.response()
send_mes = "http://www.wechall.net/challenge/training/programming1/index.php?answer=" + response.read()
br.set_handle_robots(False)
br.open(send_mes)
result = br.response()
a=result.read()
print a
f=open('out.html',"w")
f.write(a)
f.close

こんな感じで書いてみました。
f:id:eyesjapan:20150124214214p:plain
結果もこのようになりました。
今回といた問題はprogrammingさえ出来ればそう難しくはない問題でした。
exploitは書いたほうが良いのでできるだけexploitを書くようにしましょう!