We Chall --- "Training: ASCII"

こんにちは、関根です。
今回はexploitを書く大切さを知ってもらいたいと思います。
なぜなら、CTFなどの大会では問題の答えがわかるだけで点数がもらえるので良いのですが、それでは次回にまた似たような問題を解くときに、一から始めたいといけません。そこで、答えを導くためのexploitを書いておけば、より時間を短縮して、問題を解くことが可能となります。
今回はWe Challの”Training: ASCII”のexploitを書いて見たいと思います。
この問題は数字をASCIIコードに変換し、メッセージを出すことができれば、答えがわかるものです。

f:id:eyesjapan:20141115021134p:plain

 
自分が初めてこの問題を解いた時にはASCIIコード表を使い手作業で1つの数値を1つの文字に変換しました。

f:id:eyesjapan:20141115021159p:plain

         ASCII文字コード : IT用語辞典
 
84   = T
104 = h
101 = e
のように変換していけばこの問題は解けます。
しかし、これでは、変換する文字列が多くなればなるほど時間がかかってしまい、大変です。なので、exploitを書いてみましょう。
 
 

f:id:eyesjapan:20141115021327p:plain

このように書けばすべての数値が変換されて、メッセージ出力されるはずです。
実際に実行してみると、

f:id:eyesjapan:20141115021408p:plain

となりこれにより答えは”agonnrmgcbld”だと思われます。
 

f:id:eyesjapan:20141115021424p:plain

f:id:eyesjapan:20141115021434p:plain

 無事正解できました。
 
この問題は、数値をASCIIコードに変換するだけのとても、簡単なものですが、exploitを書くことによって次に同じような問題にあたってもこれを使うだけで、大幅に時間を短縮することができます。
今回の自分のプログラムでは、10進数のデータをプログラムに書いていたので、これを別のファイルから読み取るようにしてプログラムに変更を加えず、特定のファイルに10進数のデータを書いて変換するようにすれば、もっと良いプログラムになると思います。
 
これがあれば問題が変わってもすぐに答えがわかりますね。
 
問題
76, 101, 116, 39, 115, 32, 119, 114, 105, 116, 101, 32, 116, 104, 101, 32, 101, 120, 112, 108, 111, 105, 116, 46
 
 

f:id:eyesjapan:20141115024429p:plain

 
 
このブログの更新日は毎週土曜日です。
次回もお楽しみに!