フルスタックエンジニアへの道

「フルスタックエンジニアになりたい。。。いや、なってやる!」という備忘録

Bandit Level 2 → Level 3【Over The Wire】

Linuxのコマンド練習になってCTF的な要素もある、「OverTheWire: Bandit」をやっていきます。
今回は「Bandit Level 3」を行います。

overthewire.org

環境

Bandit Level 3

※問題を解くために、Tera Termなどを使ってレベル2のユーザにログインしてください。
Tera TermやコマンドプロンプトでのSSHの方法は過去記事をご覧ください。

ryasshi.hatenablog.com

Bandit Level 3」にアクセスすると下記の問題文が記載されていました。

f:id:ryasshi:20191227171145p:plain

Banditはこのように、問題文と問題を解くために利用する可能性があるコマンドなどが記載されています。
問題文からもわかる通り、homeディレクトリにある「spaces in this filename」ファイルに次のレベル(Level 3)のパスワードがあるようです。
ヒントにもありますが、まずはspaces in this filenameファイルが本当にあるか確認するために、「ls」コマンドを使います。lsコマンドはディレクトリ内のファイルやフォルダの一覧を表示するものです。

f:id:ryasshi:20191227171737p:plain

「spaces in this filename」ファイルがありました。
今度はファイルの内容を表示する「cat」コマンドを使って、spaces in this filenameファイルの内容を表示します。
と、いきたいところですが、普通に指定すると

f:id:ryasshi:20191227172016p:plain

のように、開けません。
エラーメッセージをみてピンとくるかもしれませんが、これは、「cat」コマンドが「空白(スペース)」区切りで別々のファイルだと認識してしまうからです。
つまり、先程のcatコマンドでは「spaces」「in」「this」「filename」という4つのファイルを順番に開くことになり、そんなファイルは存在しないためエラーメッセージが出る。というわけです。

といっても、「Tab」キー(補完機能)を使用する人はこのエラーが出ずに開けたかと思います。
何故かというと、空白(スペース)を下図のように自動的に「¥」(UNIX/Linux系だと「バックスラッシュ」)でエスケープして、空白(スペース)をファイル名の一部として認識できるようにしてくれるからです。

f:id:ryasshi:20191227173125p:plain
WindowsTeraTerm
f:id:ryasshi:20191227173158p:plain
UNIX/Linux(Git Bush)

もう一つ、空白(スペース)をファイル名の一部として認識させる方法があります。
それは、「””(ダブルクォート)」もしくは「''(シングルクォート)」でファイル名を囲むという方法です。

f:id:ryasshi:20191227175058p:plain

では、どちらかの好きなやり方でファイルを開いてみましょう!

f:id:ryasshi:20191227175624p:plain

出ました!(※わざと黒塗りしています)
これを使って「bandit3」ユーザにSSHしてみます。

Tera Term」を使っている場合は、パスワードをマウスで選択するだけでコピーができます。「コマンドプロンプトやパワーシェル」の場合はマウスで選択後に右クリックや[Ctrl] + [C]でコピーします。貼り付けは両方とも右クリックから行います。

また、新たにbandit3にSSHするには下記のように行ってください。
Tera Term」を使っている場合は、画面左上にある「ファイル」から「新しい接続」をクリックすると新たにSSH接続ができます。 「コマンドプロンプトやパワーシェル」などを使っている場合は、「exit」と入力してEnterを押下するとSSH接続を切ることができます。もしくは、新たにコマンドプロンプトなどを起動してください。

f:id:ryasshi:20191227180209p:plain
Tera TermでのSSH

SSHできました!
これで「Level 3」は終了です。
今回は、空白(スペース)が含まれているファイルを開くという問題でした。


参考:
http://overthewire.org/wargames/bandit/