ネットエージェント
http://job.rikunabi.com/2011/static/kdbc/88/r888010080/detaila/I001/
全部で3問あるらしく、全問正解できたら豪華賞品がもらえるとか。
特別枠は魅力的だけど、それ以上に問題に興味があるので、この手の入社試験を解くのが好きです。
以下ねたばれ。
1問目
このURLを解読せよ。
知ってるか知らないか、の問題です。
cGJoLmpwL3dpeg==
文字列の == が何の処理を施したかのヒントになってます。というか答えです、base64です。
base64でデコードすると、
というURLの文字列が出てきます。
pbh.jp/wiz
最低限の知識を試してるのかなーって思いました。
2問目
と、記述されてるだけです。
http://vulnerability.jp/{answer}.html
e5877ebe3560be14d35c6eb96ffa38fee97078f0
まず、ハッシュ値に注目します。
小文字のアルファベット[a-f]、数字が使用されており、文字数は40文字です。
独自の一方向ハッシュ関数によるハッシュ値だと解きようがありませんw
有名な暗号アルゴリズムだと仮定すると、ハッシュ値が16進数40文字のアルゴリズムはSHAが挙げられます。
SHA-0,SHA-1,SHA-2など種類はありますが(よくしらない)、SHA-1でしょう、たぶん。
問題を察するに、ハッシュを解読して得られた文字列を{answer}に埋め込めばいい。
と、思っていた時期がありました。
英数字+記号による全探索だと解読時間が洒落にならない。
小文字+数字+いくつかの記号 で全探索するプログラムを2日走らせたけど発見できない。
考えてみれば、全探索による解法なんて、ただいたずらに人を篩い落とすだけで良い問題だとは思えない。
きっとヒントを元にするはず。
そこで、1問目に思い至る。
1問目を解読して得られた文字列が「pbh.jp/wiz」
最後の/を打たないと、正しいURLにならない。/を付け加えることでエンコードしたとき = が出現せず、
ヒントがなくなってしまうということであれば、この文字列にも納得できる。
しかし、/を付け加えてエンコードしてみても = が1文字残る。つまり、ヒントは残ってることになる。
不審に思い、「pbh.jp/wiz」をSHA1で暗号化してみると、
e5877ebe3560be14d35c6eb96ffa38fee97078f0
勝った…、勝ったああああああああ
早速、answer部分に埋め込んでファイナルアンサー。
Not Found ・・・ ん?
き、気のせいだろ…何か打ち間違ったのかな、コピペっと、エンター。
Not Found
( ゚д゚)ポカーン
何かが崩れる音が聞こえた。
もう一工夫足りないのかと思い、文字列に少々手を加えて試してみましたがだめでした。となると、
文字列「http://vulnerability.jp/{answer}.html」をSHA1で暗号化したハッシュ値が、
「e5877ebe3560be14d35c6eb96ffa38fee97078f0」
になるような、文字列 answer を求めろ、という問題だったということです。たぶん。
ハッシュ値が衝突する文字列を求めろ、に置き換えられる問題ですね。それでも普通にやったら全探索に…。
結局まだ解けてません。