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ポートが解放されています。

f:id:akebono-haze:20210526220400p:plain

80番ポートが解放されているので、ブラウザでアクセスしてみます。

f:id:akebono-haze:20210526220434p:plain

並行してgobusterコマンドでディレクトリ一覧を調査してみます。

f:id:akebono-haze:20210526220738p:plain

「island」ディレクトリが検出されたのでアクセスしてみます。 意訳で、「あなたはLian_Yuへの道を見つけるべきです。コードワードは 」で途切れています。

DeepLで訳を確認しようと、広めに範囲指定したら文字が隠れていました。

f:id:akebono-haze:20210526220815p:plain

設問の答えは4文字なので、今回見つけたディレクトリ名ではなさそうです。もう一度gobusterコマンドをURLに「island」を含めて実行してみます。

f:id:akebono-haze:20210526220847p:plain

 4桁のディレクトリが見つかりました。

what is the file name you found?

4桁のディレクトリ名を含めたURLをブラウザでアクセスしてみます。動画は再生できませんでした。

f:id:akebono-haze:20210526221122p:plain

 この先がわからなかったので、先人の知恵を拝借すると、このページのソースを見るらしい...

f:id:akebono-haze:20210526221229p:plain

 コメントにあなたはチケットを利用することができます。ってどういうこと?

ticketのまえのドット(.)があるので拡張子と思われます。Gobusterコマンドで「-x」オプションをつけて検索してみます。

f:id:akebono-haze:20210526225727p:plain

出力結果が解答になります。

what is the FTP Password?

上の解答結果をURLに付加してアクセスします。

f:id:akebono-haze:20210526225813p:plain

文字列がありました。

この文字列をそのままパスワードとして使用してもログインできませんでした。

cyverchefを使ってこの文字列をデコードしてみます。

gchq.github.io

Base32、Base64はダメでした。

「base」で検索すると、「Base58」が出てきました。

f:id:akebono-haze:20210526223339p:plain

このデコードした値を使うとログインできました。

 

Base58とは、Base64に似ていますが、英数字以外の文字(+および/)と、印刷時にあいまいに見える可能性のある文字(0-ゼロ、I-大文字のi、O-大文字のo、およびl-小文字のL)の両方を回避するように変更されています。

en.wikipedia.org

 

what is the file name with SSH password?

ログインに成功しました。

ホームディレクトリにどんなファイルがあるか確認してみます。

2つのpngファイルと1つのjpgファイルがありました。

f:id:akebono-haze:20210526223738p:plain

3つのファイルをgetコマンドでダウンロードします。

f:id:akebono-haze:20210526224122p:plain

ImageViewerで画像ファイルを確認します。

f:id:akebono-haze:20210526224540j:plain

aa.jpg

f:id:akebono-haze:20210526224819p:plain

Queen's_Gambit.png

「Leave_me_alone.png」ファイルは破損しているようで見ることができませんでした。fileコマンドで確認してもpngファイルとして認識されません。

f:id:akebono-haze:20210526225851p:plain

hexeditorで「Leave_me_alone.png」ファイルを確認してみます。先頭の16進数がpngファイルと文字列と違うので修正します。

f:id:akebono-haze:20210526225914p:plain

修正前

f:id:akebono-haze:20210526230016p:plain

修正後

PNG file,の16進数は以下の通り。

sig: 89504E470D0A1A0A

 修正した後の「Leave_me_alone.png」を開くと、画像の中にパスワードが表示されました。

f:id:akebono-haze:20210526232008p:plain

 

この先がわからなかったので、ここも先人の知恵を拝借しました。

# steghide extract --sf <ファイル名>

 ・・ ファイル名に隠されたファイル等を取り出す。

aa.jpgファイルに対してsteghideコマンドを実行してみます。

 # steghide extract --sf aa.jpg

zipが出力されました。これを解凍すると2つのファイルが出力されます。 この2つのファイルをcatコマンドで中身を確認します。

f:id:akebono-haze:20210526232154p:plain

f:id:akebono-haze:20210526232324p:plain

ファイル名が設問の答えのパスワードとなります。

user.txt

2つの文字列を使ってsshで接続を試みます。

f:id:akebono-haze:20210526232641p:plain

ログインできたので、lsコマンドを実行してみます。

user.txtファイルが含まれているのでcatコマンドで中身を確認します。

f:id:akebono-haze:20210526233206p:plain

root.txt

sudo -lコマンドを実行すると、/usr/bin/pkexecコマンドをrootとして実行できることがわかります。

gtfobins.github.io

 

$ sudo /usr/bin/pkexec /bin/bash

root権限を取得できたので、/rootディレクトリを確認するとroot.txtファイルを見つけました。 catコマンドで中身を確認します。

f:id:akebono-haze:20210526233351p:plain

完了!