iPhoneでHackTheBox InviteChallenge


HackTheBoxのInvite ChallengeをiPhoneでクリアしていきます。

どこに需要があるんだこれ。って自分でも思うんですけど便利なiPhoneアプリの紹介とPCが使えない方でも簡単な勉強できますよって意味を込めて。

HackTheBoxのChallengeは本記事でも紹介しますiSHを使ってできるものも多くあります。出先の隙間時間に遊んでみるのもいいかと思います。
それでは本題に。

Join now!

まずはHackTheBoxのユーザ登録ページにアクセスします。

Invite Codeがないと登録できません。
ページ下部のhelpをクリックすると、コンソールを見なさいと書いてあります。

Inspect

Safariではコンソールを確認できませんので、Inspect Browserというアプリを使います。(以下リンクより)
Inspect Browser
有料のアプリですが、webページの解析機能で不便することはありません。
Inspectで先程のページを開いてコンソールを確認した画面は以下のようになりました。


コンソール下部に表示されているメッセージからJavaScript ファイルを探れば良いと判ります。
Inspectはページが読み込んでいるJavaScript ファイルも参照できます。

JavaScriptファイルにinviteapi.min.jsというものがあります。中身を見てみましょう。

functionの中にmakeInviteCodeを発見!
使えそうなのでconsoleで実行!

makeInviteCode() 



レスポンスが来ました。
Dataはrot13で暗号化されているようです。
復号してみましょう。

Pythonista

レスポンスデータの復号スクリプトをPythonで書きます。iPhoneでも手軽にpythonプログラミング、デバッグ、ビルドもできるアプリにPythonista があります。
Pythonista
Rot13(シーザー暗号)をエンコードはPython組み込みのcodecsで可能です。以下のようなスクリプトを組みました。

import codecs

string = 'Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/vaivgr/trarengr'
data = codecs.encode(string,'rot13')
print(data)

実行は右上の▶︎マーク

メッセージが表示されました。
コードを入手するには/api/invite/generateにPOSTでリクエストを送るようです。

iSH

任意のurlにリクエストを送るのに、Linux系であればターミナルですぐに行えますが、iPhoneにはデフォルトではシェルがありません。
iPhoneでもシェルを使えるようにするにはTestFlight経由でインストールするiSHをダウンロードします。
詳細については以下の記事を参照してください。
「Linux shell for iOS」iPhoneで動かすシェルが予想以上に面白かった

iSHを開いて以下のコマンドを実行します。

curl -XPOST https://www.hackthebox
.eu/api/invite/generate


レスポンスを見るとコードが返ってきていますが、format:encodedとなっています。
Base64でエンコードされているようです。
デコードするためのスクリプトをrot13の時と同様、Pythonistaにて実装し実行します。

import base64

string = 'QlRETVEtTVpSQ0wtQVJQUEUtUE5aS1YtV1NFSEk='
code = base64.b64decode(string)
print(code)

InviteCodeを入手できました。
お疲れ様でした。

おわりに

わざわざiPhone でやることでもないだろうにやってみました。
iPhone のアプリにも優良なアプリが多数あります。
HackTheBoxのChallengeにはSQLInjectionを主体とするもの、Webのソースコードを解析していくもの、Pythonによるスクリプトで課題をクリアするものなど、本記事で使用したアプリが活躍する場面多くあります。
ぜひ試してみてください!