フルスタックエンジニアへの道

「フルスタックエンジニアになりたい。。。いや、なってやる!」という備忘録

8946 Take#3

今回は「http://www.hackerschool.jp/hack/」の正答率が3番目に高い(2019/07/27現在)「Take#3」を解いていきたいと思います。

http://www.hackerschool.jp/hack/www.hackerschool.jp

環境

Take#3

Take#3にアクセスすると、下図のような「id」と「パスワード」を入力するフォームがあるページが出てくると思います。Take#1とTake#2同様、このidとパスワードを入手しなければならないようですね。

Take#3の画像
Take#3

今回も手始めに、「突破する!」を押すとどのような動作をするのかを確認していこうと思います。
[F12]」(もしくは、右クリックをして「検証」)を押して、デベロッパーツールを開き、「突破する!」のボタンの箇所を特定します。
デベロッパーツールが出たら、突破する!のタグがどこにあるかを確認します。上図左上にある赤枠のマウスのカーソルのようなマークをクリックして、「突破する!」をクリックします。すると、「突破する!」の箇所がハイライトされるはずです。

おっと、onclickがないと思ったら答えがあります!(やったぜ!!)
コピーしてっ、、、と思ったら選択できないじゃん!?
どーすんだこれ?と思ったけど右クリックしたらこんなものが

f:id:ryasshi:20190728175146p:plainf:id:ryasshi:20190728175347p:plain

これで選択してコピーできました。あとはこれをフォームに貼り付けてっと

f:id:ryasshi:20190728175537p:plain

あれ?突破できない???

f:id:ryasshi:20190728175728p:plain

知っている人なら、パスワードの「==」を見た時に「ピンっ」ときたと思います。そうです、これは「Base64*1」でエンコードされています。ですので、デコードしてあげれば本当のIDとパスワードが出るはずです。
しかし、Base64の存在を知らない人からすると、「なんでパスワードの『==』でピンっと来るんだ?」となると思います。Base64では、エンコードを4文字ごとに行うので、文字数が足りないときは「」で穴埋めします。(詳しくはこちら「Base64 - Wikipedia」)
つまり「=」が末尾についてるのでBase64なのかな?となったということです。
また、このBase64は、暗号化ではなくエンコード、つまり符号化(元々の文字とは、別のものに置き換えただけのもの)ですので、簡単に元に戻すことができます。
デコードして本当のIDとパスワードを取得するために、「Base64 エンコード」などでググってみてください。
デコードした文字列を使って、もう一度突破できるか挑戦です。

f:id:ryasshi:20190728190341p:plain

突破できました!
例のごとく解説を読んで終了です。

f:id:ryasshi:20190728190315p:plain


参考:
http://www.hackerschool.jp/hack/
https://ja.wikipedia.org/wiki/Base64

*1:

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。具体的には、A–Z, a–z, 0–9 までの62文字と、記号2つ (+, /)、さらにパディング(余った部分を詰める)のための記号として = が用いられる。
Base64 - Wikipedia