KSNCTF #7 Programming
問題
考えたこと
*.cpp って C++ の拡張子だったよなという感じで普通にコンパイルして実行した。
% gcc program.cpp % ./a.out FROG_This_is_wrong_:(%
はい。
コンパイル時に警告めっちゃ出たのでそこが脆弱性なのかもと思ったけど、プログラムの脆弱性を突く問題ならコンパイルしたあとの実行ファイルだけ配ればいいはずで、ソースコードを渡してきてるということはソースに意味があるという気がした。
インデントとか無駄なスペースを消してソースを見やすくして見てみたりしたけど何も得られなかった。
gcc でコンパイルできてしまったけど、 C++ はコンパイルの仕方が違うのか?とか思って調べて g++ とかでコンパイルしたりしたけど結局わからなかった。
諦めてググったら whitespace という言語があるらしい。
拡張子に騙されてしまった。ググったら ws2js という JavaScript への変換機能つきのインタプリタを見つけたのでコード投げたら、PIN を入力しろと言われたけど、変換されて出てきた JavaScript のコードみたらなんとなく分かったのでそのまま入力したら旗取れた。
Whitespace Interpreter written in JavaScript
思ったこととか
知ってるかググるかというタイプはなんか微妙な気がするけど、知らない側がそれを言っても仕方ないし、CTF やってる人にとっては知ってて当たり前なのかもしれない。
今後も似たような問題見るかもしれないし、たまたま聞いたりした esolang は覚えておくとか、拡張子を鵜呑みにしないとかそういうところは意識していきたい。
esolang といえば大学で聞いた Grass を思い出す。