@toRi

できたてほやほやのエンジニアです。インフラ、セキュリティ系です。ふんわり命がけ(´・ω・)

ksnctf Sherlock Holmes 70pt

f:id:loveeeeeebird:20191228154141p:plain

URLにアクセスしてみます。

f:id:loveeeeeebird:20191228154356p:plain

この三つにアクセスするとこんな感じのページに移りますが、flagの文字はありませんでした。

f:id:loveeeeeebird:20191228161933p:plain

http://ctfq.sweetduet.info:10080/~q26/index.pl の一つ上のディレクトリ(http://ctfq.sweetduet.info:10080/~q26/)に入ってみます。

f:id:loveeeeeebird:20191228160609p:plain

flag.txtがあります。しかしながら中身を見ても権限がないみたいで見れません。

ここから分からなくなって他の方のwriteupを見ました。(すぐwriteup見る)

最初に開いたページの先で英文が見れたのは、/index.plを経由していたからみたいです
。どうやらindex.plの中でファイルを読み込む処理があって、それ経由じゃないとファイルへのアクセス権限がないようです。(そういうのあるんだ)

なので、/index.plを経由してflag.txtを見てみます。(http://ctfq.sweetduet.info:10080/~q26/index.pl/flag.txt

f:id:loveeeeeebird:20191228162226p:plain

おしい、、似てるけどflagではない、、、ソースコードを見てって書いてあるのでF12で見てみるもflagらしきものがありません。

また行き詰まったのでwriteupを見てみます。(ほんとに感謝です)

どうやらperl脆弱性の問題らしく、「Perl cgi 脆弱性」って調べるといろいろでてきます。
Perlの仕様で、ファイル名の前もしくは後ろに|(パイプ)を付けるとOSコマンドを実行するらしい。

試しにhttp://ctfq.sweetduet.info:10080/~q26/index.pl/|ls で開いてみます。

f:id:loveeeeeebird:20191228163952p:plain

すると、/index.pl下にあるファイルを確認することができます。
なんと、flag.txtがありました! |cat flag.txt にして中身をみます!、、、

FROG_CroakCroak How about to try to see the source code? といわれました。

lsしたときにPerlのファイルがあったので、それをみればいいのでしょうか。
cat index.pl をしてみます。フラグがありました。

f:id:loveeeeeebird:20191228164725p:plain

こういうのをOSコマンドインジェクションというらしいです。
Perlは比較的簡単に書けるので、初心者(私も知りませんでした!)が、
Perlで書いた脆弱性が改善されてないサイトがまだまだたくさんあるらしいです。。。
色々なコマンドインジェクションがまとめてあったサイトを載せておきます。

OSコマンドインジェクション