CTFやってみた
今日,このようなイベントがありました.
ここで,CTFをしてきました.
このCTFは初歩だということで,CTF初心者の僕にちょうど良いです.
前提
今回のCTFでは,UNIXコマンドを使います. なので,Linuxを使えるようにしましょう.
CTFではおなじみの,Kali Linuxというものをインストールします.
インストール方法は検索すれば簡単に見つかるので,省略.
https://qiita.com/mah-nyan/items/754206330c0d43c71935
実際に解く
Kali Linuxを使って OverTheWire: Bandit を解いていきます.
Level 0 → Level 1
この問題は,sshするという問題です.普通に,ポートを指定してsshします. Kali で端末を開いて,
ssh bandit0@bandit.labs.overthewire.org -p 2220
すると,readmeというファイルがあるので,
cat readme
これが次のパスワードです.
Level 1 → Level 2
新しく端末を開く,もしくは exit して bandit1 でログインします.パスワードは,マウスでコピペすると簡単に入力ができます.
ログイン後,lsをすると - という名前のファイルがあります. cat - としても見ることができないので,
cat ./-
これで表示されます.
Level 2 → Level 3
lsをすると, spaces in this filename というファイルが出てきます. このファイルをcat すれば良さそうですが,普通に入力するとダメなので,スペースをエスケープしてあげる必要があります. なので,
cat spaces\ in\ this\ filename
Level 3 → Level 4
lsをすると,inhereというフォルダがあるので,中に入ります.
cd inhere
再びlsをしてみますが,中に何もありません. もしかしたら,隠しファイルがあるかもしれないので,
ls -a
.hiddenというファイルがあるとわかります. なので,
cat .hidden
Level 4 → Level 5
先程同様 inhereに入って,lsをします. -file00 ~ -file09 というものがあります.
とりあえず,cat で -file00 を見てみると,
cat ./-file00
文字化けしたようなものが出てきます. 人間が読めるものが出てくるものがあるはずなので,確認します.
file ./*
すると,-file07だけ ASCII text と出てきます.なので,
cat ./-file07
Level 5 → Level 6
inhereに入ると,大量のディレクトリが出てきます. この中から,1033 bytes のものを探します.
find -size 1033c
すると, ./maybehere07/.file2 と出て来るので,
cat ./maybehere07/.file2
Level 6 → Level 7
somewhere on the server と書かれているので,全体から探します. 検索するものは,user が bandit7,group が bandit6,size が 33 bytes なので,
find / -user bandit7 -group bandit6 -size 33c
Permission denied のファイルも出てきているので,
find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
出てきたものをcat すればOK
cat /var/lib/dpkg/info/bandit7.password
Level 7 → Level 8
lsをすると,data.txtというものがあり,この中から "millionth"が入った単語を探します.
grep millionth data.txt
すると 一つだけ表示されるので,これが bandit8のパスワードです.
Level 8 → Level 9
一回だけ出てきているものを探します.なので sortした後,uniqなものを表示します.
sort data.txt | uniq -u
Level 9 → Level 10
file data.txt
をすると,形式がdataとなっています. そのため,stringsコマンドで文字にします. また,連続する=が含まれているということなので,
strings data.txt | grep ==
Level 10 → Level 11
data.txtはbase64でエンコードされているらしいので,デコードします.
base64 -d data.txt
Level 11 → Level 12
問題文に13文字ぶんずらしていると書かれています. ということは,aがn, zがmなので,
cat data.txt | tr ‘[a-zA-Z]’ ‘[n-za-mN-ZA-M]’
この問題,メンバーはpythonで解いていたみたい.
ここで,時間が終わってしまいました.
感想
問題が解けたときの快感が凄まじいです.
次 何をすれば雰囲気が分かるので,man でどのようなオプションがあるのか見ると,大体理解できます.(それでも分からなければGoogle先生に)
あと今回,グループでこのCTFをしていたので,わからないことを気軽に聞けた点がとても良かったです.
CTF少し勉強してみようかな...
ではでは👋
[追記]
しゃしん氏が,level 20までの解き方を載せてくれています.