BasicMission::Basic8攻略

問題

Sam remains confident that an obscured password file is still the best idea, but he screwed up with the calendar program. Sam has saved the unencrypted password file in /var/www/hackthissite.org/html/missions/basic/8/

However, Sam's young daughter Stephanie has just learned to program in PHP. She's talented for her age, but she knows nothing about security. She recently learned about saving files, and she wrote an script to demonstrate her ability.

攻略

再びできなかった。

変数として渡すのなら、

'";echo exec("cat /var/www/hackthissite.org/html/missions/basic/8/");/*

こういうことができるのかなーと思ったんだけど、ダメだった。
サニタイズしてるみたいだし、どうも見当違いな気がする。


タイムアップで答えを参照すると、

Level8ではSSIの知識が必要になります。

SSIってなに?

SSIとは、サーバ側であらかじめ組み込まれたコマンドを利用する仕組みのことです。そのため、SSIでは動的で有用な作業を実行するのにプログラムのようなコーディングを作成する必要はなく、何種類かの SSIコマンドを使うだけでよいのです。
SSIコマンドというのは、サーバ側が HTMLファイルを解析しながら実行します。HTMLコードに埋め込まれた特別なコマンド(命令)です。

つまり、
SSI = HTMLに簡単なコマンドを埋め込んで動的ページを再現しましょう的な何か。

で、攻略は
SSIには「exec cmd」という任意のコマンドを実行できる命令があります。そして、開発者のステファニーが作ったプログラムは、SHTMLファイルを作成するものであり、つまり、攻撃者が任意のSSI命令を書き込むことが可能になるものです。
よって、例えば、「<!--#exec cmd="ls" -->」という命令を書き込めば、ディレクトリ内のファイルが列挙されることになります。

こんなんあるんだなー
知らなかった。