🕊️

[Level 0 ~ 9] OverTheWire Bandit Writeup

2024/11/13に公開

はじめに

→→(Level10~19)

サイト

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

環境

  • macOS
  • Intelチップ

Tips

macOS 使いは,パスワードをコピーした度に,下記のコマンドをローカルで実行すると,良い感じにパスワードが保存できてタイヘンヨーイ

pbpaste >> password && echo "" >> password && cat -n password

ルール

Level0

ユーザー名(bandit0)を指定して ssh 接続を行う.

$ ssh -p 2220 bandit.labs.overthewire.org -l bandit0

パスワードは bandit0 を入力する.

これより先の注意書き

ログインの前提

前回レベルのユーザー名 を指定し,(ssh -p 2220 bandit.labs.overthewire.org -l <前回レベルのユーザー名>) 前回レベルのパスワード を入力し,ログインしたものとします.(i.e. シェルはローカルではなく,ログイン後の bandit.labs.overthewire.org 上を想定しています.)

基本的なコマンドの省略

基本的なコマンド(基準は問題に依存した相対的なものですが,cd など)の説明は徐々に省かれます.

→Level1

cat コマンドを用いて中身を表示する.

bandit0@bandit:~$ cat readme

→Level2

- がオプション扱いされないように,相対パス ./ を用いる.

bandit1@bandit:~$ cat ./-

→Level3

空白は \ でエスケープさせる.

bandit2@bandit:~$ cat spaces\ in\ this\ filename

→Level4

隠しファイルは ls コマンドの -a を指定することで表示できる.

bandit3@bandit:~$ ls -a inhere
.  ..  ...Hiding-From-You
bandit3@bandit:~$ cat inhere/...Hiding-From-You 

→Level5

cd を用いて inhere/ ディレクトリに移動し, file コマンドを使って,人間が読めるファイルを見つける.

bandit4@bandit:~$ cd inhere/
bandit4@bandit:~/inhere$ file ./*
./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data
bandit4@bandit:~/inhere$ cat ./-file07

→Level6

  • find コマンドを用いて, 1033 バイトのファイルを探す.
  • 結果が1件しかなかったので,それが答え.
bandit5@bandit:~$ cd inhere/
bandit5@bandit:~/inhere$ find . -type f -size 1033c
./maybehere07/.file2
bandit5@bandit:~/inhere$ cat ./maybehere07/.file2

→Level7

  • find コマンドで user group size を指定すれば良い.
  • 標準エラー出力が鬱陶しいので, 2>/dev/null を指定すると該当ファイルだけが出る.
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -type f -size 33c 2>/dev/null 
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password

→Level8

  • less コマンドを用いて,ファイルの中身を確認する.
  • 基本的な vim コマンドが使えるので, /millionth と入力し, Enter を押すと,該当する行が出てくるので,それが答え.
bandit7@bandit:~$ less data.txt 

→Level9

  • awk コマンドを使って,何回同じ行が現れたかを計算し,一度だけ現れた行を出力する.
  • 参考サイト
bandit8@bandit:~$ awk '{cnt[$0]++} END {for (ans in cnt) if (cnt[ans] == 1) print ans}' data.txt 

おわりに

→→(Level10~19)

筆者について

https://mattsun-kun-portfolio.vercel.app/

Discussion