【TryHackMe】Gotta Catch'em All! Writeup

# はじめに
OSCP合格に向けて着手しているTryHackMeのwriteup兼備忘録になります。
今回は難易度がEasyである「[Gotta Catch'em All!](https://tryhackme.com/r/room/pokemon)」というRoomを攻略しました。
**※扱い次第では法に触れるため、悪用厳禁です。**

# Task1 Can You Catch'em All?

ポートスキャンを実行します。
```
└─$ nmap -Pn -T4 10.10.139.95
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-31 01:27 EDT
Nmap scan report for 10.10.139.95
Host is up (0.26s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 22.36 seconds
```

結果をもとにブラウザへアクセスした所、Apache2のページが表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/6d6fce4d-24f0-349d-f6ea-8a870987f4fb.png)

次にgobusterコマンドで確認しましたが、何も隠しディレクトリが表示されなかった為、引き続きブラウザのソースコードなどを確認していると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/fc9e387a-074f-053c-eed5-1f654daac87b.png)

```
pokemon:hack_the_pokemon
```
どうやらこれがsshのログイン情報らしい。。。
加えて、開発者ツールからだとインデントがずれる為、より分かりづらくなかなか気づきにくいのでは。。。

無事sshでログイン出来ました。
```
└─$ ssh pokemon@10.10.139.95
pokemon@10.10.139.95's password: 
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-112-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

84 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

pokemon@root:~$ 
```

## Find the Grass-Type Pokemon
いくつかディレクトリを確認できたので順々に探ってみます。

```
okemon@root:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates
```

```
pokemon@root:~$ cd Desktop
pokemon@root:~/Desktop$ ls
P0kEmOn.zip
pokemon@root:~/Desktop$ unzip P0kEmOn.zip 
Archive:  P0kEmOn.zip
   creating: P0kEmOn/
  inflating: P0kEmOn/grass-type.txt  
pokemon@root:~/Desktop$ 
pokemon@root:~/Desktop$ ls
P0kEmOn  P0kEmOn.zip
pokemon@root:~/Desktop$ 
pokemon@root:~/Desktop$ cd P0kEmOn/
pokemon@root:~/Desktop/P0kEmOn$ 
pokemon@root:~/Desktop/P0kEmOn$ ls
grass-type.txt
pokemon@root:~/Desktop/P0kEmOn$ cat grass-type.txt 
50 6f 4b 65 4d 6f 4e 7b 42 75 6c 62 61 73 61 75 72 7d
pokemon@root:~/Desktop/P0kEmOn$ 
pokemon@root:~/Desktop/P0kEmOn$ 
```

Desktopフォルダに圧縮ファイルを確認したので、解凍を行ったところテキストファイルが出力されました。
何かした暗号化されていると思ったのでツールで確認した所、16進数に変換された文字列であった為、デコードして1つ目のフラグを獲得です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/07c9dd48-0a6c-6e1f-1967-e856971a3e01.png)

```
PoKeMoN{Bulbasaur}
```

## Find the Water-Type Pokemon
TryhackMeにはウェブサイト上にヒントがあるとのことでしたので、ブラウザのソースコードを眺めても何も見つからず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/22aafdc8-6c6a-ed5f-cef0-1138affc9a96.png)


ブラウザのサイトのソースコードが格納されているディレクトリに何かあるかと思い確認した所、テキストファイルを見つけました。
```
pokemon@root:/var/www/html$ 
pokemon@root:/var/www/html$ ls
index.html  water-type.txt
```

```
pokemon@root:/var/www/html$ cat water-type.txt 
Ecgudfxq_EcGmP{Ecgudfxq}
```

中身はフラグのフォーマットと思われる文字列ではありますが、これは正解ではないらしい。

さきほどのブラウザのソースコードにいくつかポケモンの英名が記載されていたのですが、今回の答えの候補である「Squirtle」とこの文字列を比較したところ、アルファベットが等間隔でずれている説が浮上したので、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/ff0c730e-804a-2818-1a3d-e243320ab0fc.png)

ポケモンの名前が表示されたので、改めてフラグ獲得です。

```
Squirtle_SqUaD{Squirtle}
```

## Find the Fire-Type Pokemon
ヒントがないので解き方に悩んだのですが、locateコマンドを使うことでファイル名を指定して検索ができるとのこと。

また前2問のテキストファイル名と問題の名前に共通点がある事から、次に探すファイル名は「 fire-type.txt」だと推測できました。

```
pokemon@root:/var/www/html$ locate fire-type.txt 
/etc/why_am_i_here?/fire-type.txt
pokemon@root:/var/www/html$ 
pokemon@root:/var/www/html$ 
pokemon@root:/var/www/html$ cd /etc/why_am_i_here\?/
pokemon@root:/etc/why_am_i_here?$ 
pokemon@root:/etc/why_am_i_here?$ 
pokemon@root:/etc/why_am_i_here?$ ls
fire-type.txt
pokemon@root:/etc/why_am_i_here?$ cat fire-type.txt 
UDBrM20wbntDaGFybWFuZGVyfQ==
pokemon@root:/etc/why_am_i_here?$ 
```

1問目と同じ感じですね。
ツールにあててデコードしてフラグ獲得です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/f2a23661-4a6e-d3ce-220d-446bc652794b.png)

```
P0k3m0n{Charmander}
```

## Who is Root's Favorite Pokemon?

2、3問目より先に回答できた問題となります。

```
pokemon@root:~/Public$ cd ../Videos/
pokemon@root:~/Videos$ ls
Gotta
pokemon@root:~/Videos$ cd Gotta/
pokemon@root:~/Videos/Gotta$ ls
Catch
pokemon@root:~/Videos/Gotta$ cd Catch/
pokemon@root:~/Videos/Gotta/Catch$ ls
Them
pokemon@root:~/Videos/Gotta/Catch$ cd Them/
pokemon@root:~/Videos/Gotta/Catch/Them$ ls
ALL!
pokemon@root:~/Videos/Gotta/Catch/Them$ cd ALL\!/
pokemon@root:~/Videos/Gotta/Catch/Them/ALL!$ ls
pokemon@root:~/Videos/Gotta/Catch/Them/ALL!$ cat Could_this_be_what_Im_looking_for\?.cplusplus 
# include <iostream>

int main() {
        std::cout << "ash : pikapika"
        return 0;
}pokemon@root:~/Videos/Gotta/Catch/Them/ALL!$ 
```

最初はこのC++のコードを実行してフラグを獲得するかと思ったのですが、このソースコード内にある情報がsshのログイン情報らしい

```
pokemon@root:/home$ ls
ash  pokemon  roots-pokemon.txt
pokemon@root:/home$ cat roots-pokemon.txt 
cat: roots-pokemon.txt: Permission denied
pokemon@root:/home$ cd ash
-bash: cd: ash: Permission denied
pokemon@root:/home$ 
```
偶然このディレクトリを発見し、pokemonユーザーでは確認する権限がなかったので、先ほど確認したashユーザーでどうなるか試します。

```
└─$ ssh ash@10.10.139.95                  
ash@10.10.139.95's password: 
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-112-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

...
$ cd home
$ 
$ ls
ash  pokemon  roots-pokemon.txt
$ cat roots-pokemon.txt
Pikachu!$ 
```

答えとなるテキストが表示されました。

# さいごに
以上となります。
マシンを攻略する上での観点が広がるような問題でした。