ksnctf Sherlock Holmes 70pt
URLにアクセスしてみます。
この三つにアクセスするとこんな感じのページに移りますが、flagの文字はありませんでした。
http://ctfq.sweetduet.info:10080/~q26/index.pl の一つ上のディレクトリ(http://ctfq.sweetduet.info:10080/~q26/)に入ってみます。
flag.txtがあります。しかしながら中身を見ても権限がないみたいで見れません。
ここから分からなくなって他の方のwriteupを見ました。(すぐwriteup見る)
最初に開いたページの先で英文が見れたのは、/index.plを経由していたからみたいです
。どうやらindex.plの中でファイルを読み込む処理があって、それ経由じゃないとファイルへのアクセス権限がないようです。(そういうのあるんだ)
なので、/index.plを経由してflag.txtを見てみます。(http://ctfq.sweetduet.info:10080/~q26/index.pl/flag.txt)
おしい、、似てるけどflagではない、、、ソースコードを見てって書いてあるのでF12で見てみるもflagらしきものがありません。
また行き詰まったのでwriteupを見てみます。(ほんとに感謝です)
どうやらperlの脆弱性の問題らしく、「Perl cgi 脆弱性」って調べるといろいろでてきます。
Perlの仕様で、ファイル名の前もしくは後ろに|(パイプ)を付けるとOSコマンドを実行するらしい。
試しにhttp://ctfq.sweetduet.info:10080/~q26/index.pl/|ls で開いてみます。
すると、/index.pl下にあるファイルを確認することができます。
なんと、flag.txtがありました! |cat flag.txt にして中身をみます!、、、
FROG_CroakCroak How about to try to see the source code? といわれました。
lsしたときにPerlのファイルがあったので、それをみればいいのでしょうか。 |
cat index.pl をしてみます。フラグがありました。 |
こういうのをOSコマンドインジェクションというらしいです。
Perlは比較的簡単に書けるので、初心者(私も知りませんでした!)が、
Perlで書いた脆弱性が改善されてないサイトがまだまだたくさんあるらしいです。。。
色々なコマンドインジェクションがまとめてあったサイトを載せておきます。