Linux の操作演習をやったけど、興味を持った人はそれなりに楽しんでくれたみたい。ひっかけのネタになっていた部分を抜粋して簡単に説明。
基本は、以下のようにディレクトリに入って、ファイルだったら表示…の繰り返し。
$ cd /home0/Challenge/1-CTF.d/Task1 $ ls -al 0ReadMe brain concussion persons $ cat 0ReadMe ... $ cd brain $ ls company concussion of-brains $ cat * ... $ cd ../concussion $ ls ...
Task4では、特殊なファイル名が入れてあるので、注意が必要。
$ cd /home0/Challenge/1-CTF.d/Task4 $ cd dir1 $ cat 'file name.txt' 空白を含むファイル名は''で囲む : $ cat ./--file.txt -で始まるファイル名はコマンドオプションと 勘違いされないように ./ をつける。
dir3 の中には、シンボリックリンク(Windowsでいうところのショートカット)があるので要注意。
$ cd ../dir3 $ ls -al lrwxrwxrwx 1 t-saitoh t-saitoh 2 Dec 20 10:45 Task4 -> .. -rw-rw-r-- 1 t-saitoh t-saitoh 39 Dec 20 10:47 ZFile4 # cd Task4 をすると、1つ上のディレクトリへのシンボリックリンクがあるので # 無限の繰り返しになる。
Task5 には、unix の基礎的なセキュリティトラップを体感してもらう。
$ cd /home0/Challenge/1-CTF.d/Task5 $ ls 0ReadMe Bomb $ cd Bomb $ ls 接続が切れてしまう。
実は、今回 Login すると、環境変数PATH の設定に不備が仕掛けてある。また Bomb のディレクトリ内には、ls , cat といった名前で、強制的に接続をするコマンドを置いてある。この仕掛けにより、Bomb ディレクトリで ls を実行すると、接続が切れてしまう。
対策1
Bomb ディレクトリに入らずにファイルを探る
$ cd /home0/Challenge/1-CTF.d/Task5 $ ls Bomb 0ReadMe Bomb $ cat Bomb/cat $ cat Bomb/flag
対策2
実は、環境変数 PATH (利用者がよく使うコマンドが保存されているディレクトリ一覧)が “.:/usr/bin:/bin” となっている。先頭に . が入っているため、カレントディレクトリの中に ls といったコマンドがあると実行してしまう。
環境変数 PATH にカレントディレクトリ(.)が入っていると、悪意のあるプログラムを実行させたい人が、危険な実行プログラムを置き逃げしてあると、実行してしまう可能性が高い。このため、(.)無しにすべき。
$ export PATH=/usr/bin:/bin $ cd /home0/Challenge/1-CTF.d/Task5/Bomb $ ls cat flag less ls lv more nkf $ cat flag FLAG{DoNotTouchBomb}