sekai013's blog

JavaScriptとかを勉強する

KSNCTF #7 Programming

問題

ksnctf - 7 Programming

考えたこと

*.cpp って C++拡張子だったよなという感じで普通にコンパイルして実行した。

% gcc program.cpp  
% ./a.out  
FROG_This_is_wrong_:(%

はい。
コンパイル時に警告めっちゃ出たのでそこが脆弱性なのかもと思ったけど、プログラムの脆弱性を突く問題ならコンパイルしたあとの実行ファイルだけ配ればいいはずで、ソースコードを渡してきてるということはソースに意味があるという気がした。

インデントとか無駄なスペースを消してソースを見やすくして見てみたりしたけど何も得られなかった。
gccコンパイルできてしまったけど、 C++コンパイルの仕方が違うのか?とか思って調べて g++ とかでコンパイルしたりしたけど結局わからなかった。

諦めてググったら whitespace という言語があるらしい。

Whitespace - Wikipedia

拡張子に騙されてしまった。ググったら ws2js という JavaScript への変換機能つきのインタプリタを見つけたのでコード投げたら、PIN を入力しろと言われたけど、変換されて出てきた JavaScript のコードみたらなんとなく分かったのでそのまま入力したら旗取れた。

Whitespace Interpreter written in JavaScript

思ったこととか

知ってるかググるかというタイプはなんか微妙な気がするけど、知らない側がそれを言っても仕方ないし、CTF やってる人にとっては知ってて当たり前なのかもしれない。
今後も似たような問題見るかもしれないし、たまたま聞いたりした esolang は覚えておくとか、拡張子を鵜呑みにしないとかそういうところは意識していきたい。
esolang といえば大学で聞いた Grass を思い出す。

難解プログラミング言語 - Wikipedia

ちょっと草植えときますね型言語 Grass