今回の問題
picoCTFより"hashcrack"を解いていきます。
実際に解いていく
1. 問題文を読む

今回の問題はWebサイトではなく、ターミナルで行うようです。以下、問題の日本語訳(Google翻訳より)です。
「ある企業が秘密メッセージをサーバー上に保存していましたが、管理者がハッシュ値の弱いパスワードを使用していたため、サーバーが侵害されました。サーバー内に保存されている秘密情報にアクセスできますか?
サーバーにアクセスするにはnc verbal-sleep.picoctf.net 57271」
ふむふむ。とりあえず今回の問題は、ハッシュ値が関係していそうですね。
2. nc verbal-sleep.picoctf.net 57271を実行する
ターミナルを開いて、問題文にあるコマンドを実行します。
nc verbal-sleep.picoctf.net 57271
すると、以下の問題が表示されました。
We have identified a hash: 482c811da5d5b4bc6d497ffa98491e38
Enter the password for identified hash:
つまり、ハッシュ値482c811da5d5b4bc6d497ffa98491e38を解析すれば良いということです!
以下のWebサイトを使って、ハッシュ値を解析します。
CrackStation
よって、答えは
password123
だとわかりました。
3. 問題は続く
先ほどの答えを入力すると、新しい問題文が表示されました。
Correct! You've cracked the MD5 hash with no secret found!
Flag is yet to be revealed!! Crack this hash: b7a875fc1ea228b9061041b7cec4bd3c52ab3ce3
Enter the password for the identified hash:
今度は、ハッシュ値b7a875fc1ea228b9061041b7cec4bd3c52ab3ce3を解析していきます。先ほどと同じWebサイトを使って解析すると...
よって、答えは
letmein
です!
4. まだまだ問題は続く
先ほどの答えを入力すると、新しい問題文が表示されました。
Correct! You've cracked the SHA-1 hash with no secret found!
Almost there!! Crack this hash: 916e8c4f79b25028c9e467f1eb8eee6d6bbdff965f9928310ad30a8d88697745
Enter the password for the identified hash:
ハッシュ値916e8c4f79b25028c9e467f1eb8eee6d6bbdff965f9928310ad30a8d88697745を同じ手順で解析すると...
よって、答えは以下のようになります。
qwerty098
5. FLAG獲得
以上3つの問題を解くと、以下のメッセージが表示されました。
Correct! You've cracked the SHA-256 hash with a secret found.
The flag is: picoCTF{UseStr0nG_h@shEs_&PaSswDs!_eff9dbe0}
よって、FLAG picoCTF{UseStr0nG_h@shEs_&PaSswDs!_eff9dbe0} 獲得です!お疲れ様でした。
もう少し考えてみる
ハッシュとは何なのでしょうか?ハッシュの概要をまとめてみました。
ハッシュとは
- あるデータを固定長の短い文字列(ハッシュ値)に変換する技術、またはその変換された値そのもの
- 入力データが1文字でも、映画1本分のデータでも、同じ種類のハッシュ関数を使えば、必ず同じ長さの文字列が出力される
特徴
データの「デジタル指紋」に例えて考えることができます。
- 一意性: 元のデータが少しでも違うと、全く異なる指紋(ハッシュ値)が生成される
- 再現性: 同じデータからは、何度やっても全く同じ指紋が生成される
- 一方向性: 指紋から元の人物を復元できないように、ハッシュ値から元のデータを割り出すことはできない
なぜ解析できない(非可逆性の)ハッシュが解析できてしまうのか?
- ハッシュ値を数学的に復元しているわけではない
- 考えられるほぼ全ての文字列と、それに対応するハッシュ値をあらかじめ計算して、巨大なデータベースに保存している(レインボーテーブル、総当たり攻撃)
つまり、今回の問題で与えられたハッシュ値は、このようなデータベースに登録されているような、よくある単純な単語や文字列のものだった、ということでした。
まとめ
今回は、ハッシュに関する問題を3つ解きました。問題解決の手順としては、Webサイトにコピペするだけでした。が、ハッシュについて学べたので大きな成長であります。
補足
・なし


