Bandit

CTF
ブログ
LevelLevel GoalNeed
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
CTFPC
スポンサーリンク
kotohaをフォローする

コメント