見出し画像

半年ぶりの TryHackMe で Advent of Cyber 2023 に挑む 16日目【Advent of Cyber: Day 16】

[Day 16] Can't CAPTCHA this Machine!


CNN …… たしか畳み込みなんとかだったはず。

What key process of training a neural network is taken care of by using a CNN?

解説を読めばわかる(← あんまりわかってなかった人)。正解は "Feature Extraction"。特徴量抽出のこと。

What is the name of the process used in the CNN to extract the features?

前問と似た問いに見えたが、CNN の名から予想がつくかもしれない。正解は "Convolution"。

What is the name of the process used to reduce the features down?

サイズをスッキリさせるのは "Pooling"。畳み込みもプーリングもなんか似てる気がするけど、畳み込みはサイズがそのままになるよう補完することもあるんだっけ?

What off-the-shelf CNN did we use to train a CAPTCHA-cracking OCR model?

解説を読む。答えは "Attention OCR"。

What is the password that McGreedy set on the HQ Admin portal?

ここから実際に手で動かしてゴニョゴニョする。

docker run コマンドで docker イメージを起動する(イメージはアタックマシンにあらかじめ用意してある。すごい)。-d オプションでバックグラウンド実行、-v オプションでホストのディレクトリへのマウントが行える。

docker exec コマンドを用いて、バックグラウンドで実行中のコンテナ内 bash を呼び出す。コマンド実行ができるようになるので /ocr/model/ を /tempdir/ にコピーする。/tempdir/ はホストの /tmp/ ディレクトリにマウントされているのでモデルをホスト側にそのまま持ってこれる(モデルはあらかじめ作ってある。すごい)。その後、コンテナは kill しておく(別にしなくていいかも)。

これでホストにモデルを持ってこれたので、このモデルを使っていよいよ Captcha を読み取っていく。docker run コマンドで TensorFlow Serving コンテナを動かす。これでいい感じに API を受け取る形になる(?)。

新たにターミナルを開いて、Python のプログラムを実行する(プログラムはあらかじめ用意してある。すごい)。このプログラムでは Username を admin に固定しつつ、学習モデルによって解析された Captcha とともに Password を総当たりで探している(パスワードリストはあらかじめ用意してある。すごい)。パスワードが見つかれば表示とともにプログラムが終わるようになっている。

What is the value of the flag that you receive when you successfully authenticate to the HQ Admin portal?

前問で得たパスワードを使ってログインを試みる。

無事ログインに成功すればフラグが得られる。

感想


解説が非常に長かったのと CNN、Docker の理解不足が相まってこれまた非常に時間がかかった。

今回、パスワードリストを使ったが、こんなパスワードは普通パスワードリストなんかに載ってないだろ!ごくありきたりなパスワードリストの中に突如都合よくあらわれる "ReallyNotGonnaGuessThis" …… 「これは当てられまい」という意味みたいだが、こちらとしてもまさに「こんなのわかるか!」という気持ちになった。

この記事が気に入ったらサポートをしてみませんか?