エンジニア初心者がLinuxを学ぶ 仕事

ゲーム感覚でlinuxコマンドを叩く。【OverTheWire: Bandit】

2024年11月24日


やっぱりエンジニアはLinuxコマンドは使えるようになった方がいいよねって思うんだけど、そんなに面白いものではないから仕事以外で使おうという気になれないのが現実。なんかいい方法はないかなってYoutubeで調べてたら、ちょうどよさげなゲーム感覚+実践でLinuxコマンド勉強できそうなサイトを紹介してる動画が出てきた。なんだか面白そうだったから俺もやってみることにした。

https://overthewire.org/wargames/bandit/

これ↑がそのサイトなんだけど、何ができるかいうと、レベルごとに課題があって、その課題をクリアすることで次のレベルに行ける。課題内容としては、sshコマンドで指定してあるサーバーに接続して、パスワードが書いてあるファイルを探すだけ。そのパスワードで次のレベルの別サーバーに接続できる。

これだけ聞くと面白要素ゼロなんだけど、パスワードは簡単に見つかるわけではなく、隠しファイルだったり、他の邪魔なファイルがあったりしてLinuxコマンドを駆使しないとパスワードが見つけられないっていう内容になってる。これは知る人は知るCTP(Capture the flag)、いわゆる旗取り合戦のことで、コンピュータセキュリティの競技大会に近いものになる。このサイトは競技でなく、初心者でLinuxを勉強したい人にはもってこいのサイトだと思う。

ちなみにパソコンがWindowsの場合は、Linuxコマンドが打てるCLIが必要で、俺みたいにWLSを入れればできる。インストール方法は以下を参考にすればOK。

Bandit Level 0:sshコマンド

The goal of this level is for you to log into the game using SSH. The host to which you need to connect is bandit.labs.overthewire.org, on port 2220. The username is bandit0 and the password is bandit0. Once logged in, go to the Level 1 page to find out how to beat Level 1.

Google翻訳↓

このレベルの目標は、SSH を使用してゲームにログインすることです。接続する必要があるホストは、ポート 2220 の bandit.labs.overthewire.org です。ユーザー名は bandit0、パスワードは bandit0 です。ログインしたら、レベル 1 のページに移動して、レベル 1 をクリアする方法を確認してください。



これは簡単。ただssh ログインをすればいいだけ。
初めてそのホストにログインにアクセスする際は警告でるから気にせずyesを入力。

Bandit Level 0 → Level 1:ls、catコマンド

The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game.

Google翻訳↓

次のレベルのパスワードは、ホーム ディレクトリにある readme というファイルに保存されています。このパスワードを使用して、SSH を使用して bandit1 にログインします。レベルのパスワードが見つかったら、SSH (ポート 2220) を使用してそのレベルにログインし、ゲームを続行します。


lsコマンドでカレントディレクトリのファイルを表示し、catコマンドでファイルの中身を出力する。

Bandit Level 1 → Level 2:catコマンド、-がファイル名の場合

The password for the next level is stored in a file called - located in the home directory

Google翻訳↓

次のレベルのパスワードは、homeディレクトリにあるというファイルに保存されます。


-という文字はオプション指定に使われるから、cat -だけだと実行できないっぽい。
./-のようにしたら実行できた。

Bandit Level 2 → Level 3:catコマンド、ファイル名にスペースがある場合

The password for the next level is stored in a file called spaces in this filename located in the home directory

Google翻訳↓

次のレベルのパスワードは、spaces in this filename といったhomeディレクトリ内のファイルに保存されます。


ファイル名にスペースが含まれてるから、シングルクォーテーションで囲んで解決。
ほかにもやり方はあるっぽい。

Bandit Level 3 → Level 4:ls -aコマンド、隠しファイルの場合

The password for the next level is stored in a hidden file in the inhere directory.

Google翻訳↓

次のレベルのパスワードは、inhere ディレクトリ内の隠しファイルに保存されます。


-aオプションを付ければ、.からはじまる隠しファイルを無視せず表示できる。

Bandit Level 4 → Level 5:fileコマンド

The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command.

Google翻訳↓

次のレベルのパスワードは、inhere ディレクトリ内の唯一の人間が読めるファイルに保存されます。ヒント: ターミナルがおかしくなった場合は、「reset」コマンドを試してください。



fileコマンドでファイルタイプを確認できる。ただ、今回やっかいなのは - がファイル名の先頭にあることで、そのまま file *だと実行できなかった。なので、./*としてあげる。

Bandit Level 5 → Level 6:findコマンド

The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties:

human-readable
1033 bytes in size
not executable

Google翻訳↓

次のレベルのパスワードは、inhere ディレクトリの下のどこかのファイルに保存され、次のすべてのプロパティを持ちます:

人間が読める
サイズは 1033 バイト
実行不可





Bandit Level 6 → Level 7::findコマンド

The password for the next level is stored somewhere on the server and has all of the following properties:

owned by user bandit7
owned by group bandit6
33 bytes in size

Google翻訳↓

次のレベルのパスワードはサーバー上のどこかに保存されており、次のすべてのプロパティを持ちます:

ユーザー bandit7 が所有
グループ bandit6 が所有
サイズは 33 バイト




Bandit Level 7 → Level 8:grepコマンド

The password for the next level is stored in the file data.txt next to the word millionth

Google翻訳↓

次のレベルのパスワードは、data.txtファイルのmillionthという単語の横に保存されます。


Bandit Level 8 → Level 9:uniqコマンド

The password for the next level is stored in the file data.txt and is the only line of text that occurs only once

Google翻訳↓

次のレベルのパスワードはdata.txtファイルに保存されており、一度だけ出現する唯一のテキスト行です。


-エンジニア初心者がLinuxを学ぶ, 仕事