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

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

8946 Take#8

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

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

環境

Take#8

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

f:id:ryasshi:20190803131659p:plain

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

f:id:ryasshi:20190803132021p:plain

ここで、onclick属性に注目してみると「fnFormSubmit()」という関数が指定されていて、ボタンが押されるとこの関数を実行するようになっているようです。この関数がどのようなものなのか、確認していきましょう。

このHTML内で関数を検索するために、「fnFormSubmit()」をダブルクリックして選択した状態にし、「[Ctrl]+[F]」を押します。すると、自動的に検索バーに文字が入力されます。

f:id:ryasshi:20190803132358p:plain

この状態で「Enter」を押下すると、、、

f:id:ryasshi:20190803134909p:plain

何やらif文で、「入力した「id」とスクリプト内の『id』が等しいかつ、入力したパスワード「pass」とスクリプト内の『pass』が等しいか」という条件が設定されています。

f:id:ryasshi:20190803133339p:plain

idは変数に代入されているものを使えばよさそうですが、パスワードは計算をした結果が変数に代入されているようです。
では、計算式を見てみましょう。

(Math.round(8%2)*(88951634/2))+(6660/4)*4/3+6726

単純な四則演算のようですね!
JavaScriptでは「×」を『*』、「÷」を『/』、「割った余り」を『%』で記述します。また、式に「Math.round」という関数がありますが、これは「引数として与えられた数を四捨五入して整数として返す」という関数です。

計算した結果と変数に代入されているidをフォームに入力します。

f:id:ryasshi:20190803131659p:plainf:id:ryasshi:20190803141544p:plainf:id:ryasshi:20190803141903p:plain

突破できました!
最後に解説を読んで終了です。

f:id:ryasshi:20190803141754p:plain


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