| Level | Level Goal | Need |
|---|---|---|
| 0 | 目標:SSHを使ってゲームにログインすること ホスト:bandit.labs.overthewire.org ポート:2220 ユーザ名:bandit0 パスワード:bandit0 | ssh |
| 0→1 | 目標:ホームディレクトリにある「readme」ファイル内のパスワードを見つけること。そのパスワードを使って、レベル1にsshでログインすること。 | ls cat |
| 1→2 | 目標:ホームディレクトリにあるファイル「-」内のパスワードを取得する。 | cat |
| 2→3 | 目標:ホームディレクトリにある「spaces in this file」というファイル内のパスワードを見つけること。 | cat |
| 3→4 | 目標:「inhere」内の隠しフォルダ内のパスワードを取得する。 | cd ls cat |
| 4→5 | 目標:「inhere」ディレクトリ内の人が読める唯一のファイルに次のレベルのパスワードがある。 | cd cat |
| 5→6 | 目標:「inhere」ディレクトリ内のファイル内に次のレベルのパスワードがある。 条件「人が読める」「1033バイト」「実行可能ファイルでない」 | cd ls grep |
| 6→7 | 目標:条件に該当するファイルがどこかにある。そのファイルに次のレベルパスワードがある。 条件「ユーザー:bandit7」「グループ:bandit6」「サイズ:33byte」 | ls grep |
| 7→8 | 目標:data.txt内の「millionth」の単語の隣が次のレベルのパスワード。 | grep |
| 8→9 | 目標:data.txt内の一回のみしか出てこない行が次のレベルのパスワード。 | cat sort uniq |
| 9→10 | 目標:いくつかの「=」の後についた人が読める文字列の一つが次のレベルのパスワード。 | strings grep |
| 10→11 | 目標:次のレベルのパスワードは、base64でエンコードされ、data.txtに保存されている。 | base64 |
| 11→12 | 目標:次のレベルのパスワードは、data.txt内にa-z,A-Zが13文字ずつずれて保存されている。 | ROT13 |
| 12→13 | 目標:次のレベルのパスワードは、data.txt内にあるが、中身は繰り返し圧縮されたファイルの16進数ダンプである。 /tmp/内に作業用フォルダを作成し、その中にcpでdata.txtをコピーして、mvで名前を変更して作業しましょう。 ところでこのファイルは圧縮しすぎです(個人的感想) | file xxd tar gzip bzip2 xz |
| 13→14 | 目標:次のレベルのパスワードは「/etc/bandit_pass/bandit14」のテキスト内ですが、その中身を読めるのは「bandit14ユーザーのみです」。だから、bandit13のレベルでは、次のパスワードの取得はできませんが、次のレベルにログインするためのSSHの秘密鍵を取得できます。 注:自ホストである「localhost」を使ってログインする。 今回は、sshで秘密鍵を指定してログインするのですね。 | ssh |
| 14→15 | 目標:次のレベルのパスワードは、現在のパスワードをlocalhostのポート30000に送信する。パスワードの場所は、ひとつ前の目標を思い出しましょう。 | cat telnet |
| 15→16 | 目標:次のレベルのパスワードは、現在のパスワードをSSL暗号化してlocalhostの30001番ポートへ送信することで取得できる。 | openssl |
| 16→17 | 目標:次のレベルのcredential情報を得るためには、現在のパスワードをlocalhostの31000~32000までのポートに送信します。 まずポートがlistenしているか調べ、 次にssl通信できるものを調べます。 最後にcredential情報を使って次のレベルへログインします。 | nmap openssl ssh |
| 17→18 | 目標:次のレベルのパスワードは、「password.new」と「password.old」の間で唯一変更された行です。 | diff |
| 18→19 | 目標:次のレベルのパスワードはホームディレクトリのreadmeファイルに保存されています。しかし、.bashrcが変更されて、sshでログインすると、「Byebye !」が表示されて自動ログトされます。 | ssh |
| 19→20 | 目標:次のレベルのパスワードを取得するには、ホームディレクトリのsetuidバイナリを使います。引数なしで実行して使い方を確認する。次のレベルのパスワードはsetuidバイナリを使ってから、/etc/bandit_pass内のものを使います。 | suid |
| 20→21 | 目標:ホームディレクトリにあるsetuidバイナリは以下の働きをします。 コマンドラインの引数として指定したポートでlocalhostに接続。 接続からテキストを読み取る パスワードが正しければ、次のパスワードが送信される。 | nc |
| 21→22 | 目標:/etc/cron.d/で構成を調べて、コマンドがどのように実行されているか確認する。 | cat |
| 22→23 | 目標:/etc/cron.d/で構成を調べて、コマンドがどのように実行されているか確認する。 ここに出てくるスクリプトはとても分かりやすいです。作られたスクリプトを読むことは非常にやくに立ちます。 | cat |
| 23→24 | 目標:/etc/cron.d/で構成を調べて、コマンドがどのように実行されているか確認する。 ここでは、シェルスクリプトを作る必要があります。 | |
| 24→25 | 目標:「bandit24のパスワードと4桁の数字」をポート30002に提供すると「bandit25」のパスワードがわかります。ブルートフォースを使いましょう。 | |
| 25→26 | ||
Bandit
CTF

コメント