TryHackMe(THM):Lian_Yu
目次
Task 1 Find the Flags
What is the Web Directory you found?
まずnmapを実行します。
# nmap -sV -sC <$IP>
21番ポート(ftp)、22番ポート(SSH)、80番ポート(HTTP)、111番ポート(rpcbind)の4ポートが解放されています。
80番ポートが解放されているので、ブラウザでアクセスしてみます。
並行してgobusterコマンドでディレクトリ一覧を調査してみます。
「island」ディレクトリが検出されたのでアクセスしてみます。 意訳で、「あなたはLian_Yuへの道を見つけるべきです。コードワードは 」で途切れています。
DeepLで訳を確認しようと、広めに範囲指定したら文字が隠れていました。
設問の答えは4文字なので、今回見つけたディレクトリ名ではなさそうです。もう一度gobusterコマンドをURLに「island」を含めて実行してみます。
4桁のディレクトリが見つかりました。
what is the file name you found?
4桁のディレクトリ名を含めたURLをブラウザでアクセスしてみます。動画は再生できませんでした。
この先がわからなかったので、先人の知恵を拝借すると、このページのソースを見るらしい...
コメントにあなたはチケットを利用することができます。ってどういうこと?
ticketのまえのドット(.)があるので拡張子と思われます。Gobusterコマンドで「-x」オプションをつけて検索してみます。
出力結果が解答になります。
what is the FTP Password?
上の解答結果をURLに付加してアクセスします。
文字列がありました。
この文字列をそのままパスワードとして使用してもログインできませんでした。
cyverchefを使ってこの文字列をデコードしてみます。
Base32、Base64はダメでした。
「base」で検索すると、「Base58」が出てきました。
このデコードした値を使うとログインできました。
Base58とは、Base64に似ていますが、英数字以外の文字(+および/)と、印刷時にあいまいに見える可能性のある文字(0-ゼロ、I-大文字のi、O-大文字のo、およびl-小文字のL)の両方を回避するように変更されています。
what is the file name with SSH password?
ログインに成功しました。
ホームディレクトリにどんなファイルがあるか確認してみます。
2つのpngファイルと1つのjpgファイルがありました。
3つのファイルをgetコマンドでダウンロードします。
ImageViewerで画像ファイルを確認します。
aa.jpg
「Leave_me_alone.png」ファイルは破損しているようで見ることができませんでした。fileコマンドで確認してもpngファイルとして認識されません。
hexeditorで「Leave_me_alone.png」ファイルを確認してみます。先頭の16進数がpngファイルと文字列と違うので修正します。
修正前
修正後
PNG file,の16進数は以下の通り。
sig: 89504E470D0A1A0A
修正した後の「Leave_me_alone.png」を開くと、画像の中にパスワードが表示されました。
この先がわからなかったので、ここも先人の知恵を拝借しました。
# steghide extract --sf <ファイル名>
・・ ファイル名に隠されたファイル等を取り出す。
aa.jpgファイルに対してsteghideコマンドを実行してみます。
# steghide extract --sf aa.jpg
zipが出力されました。これを解凍すると2つのファイルが出力されます。 この2つのファイルをcatコマンドで中身を確認します。
ファイル名が設問の答えのパスワードとなります。
user.txt
2つの文字列を使ってsshで接続を試みます。
ログインできたので、lsコマンドを実行してみます。
user.txtファイルが含まれているのでcatコマンドで中身を確認します。
root.txt
sudo -lコマンドを実行すると、/usr/bin/pkexecコマンドをrootとして実行できることがわかります。
$ sudo /usr/bin/pkexec /bin/bash
root権限を取得できたので、/rootディレクトリを確認するとroot.txtファイルを見つけました。 catコマンドで中身を確認します。
完了!