Hack.lu CTF 2015 Writeup

この大会は2015/10/20 17:00(JST)~2015/10/22 17:00(JST)に開催されました。
この週はCTFが毎日のように平日にありますが、とりあえず全参加です。
今回も個人で参戦。結果は125点(基本点:75、ボーナス点:50)で204位でした。
あまり時間がなかった割には1問でも解けて良かった。
唯一解けた問題をWriteupとして書いておきます。

PERL GOLF (Coding 75(+50))

問題は簡単に言うと、アルファベット、数字、記号が混ざっている
文字列をインプットとして、アウトプットでアルファベットに対してのみ、
大文字、小文字を交互に表示させるPerl Scriptを45文字以内で書けというもの。

Perlは詳しくなかったが、PHPよりは短くできそうだったので、挑戦してみる。
変換関数では短くできないのはわかっていたので、正規表現を使用するのは予想がついていた。
いろいろ試行錯誤の末、このようなスクリプトで正解にたどり着くことができた。

($_=shift)=~s/(\w\W*)(\w)/\U$1\L$2/g;print $_

ポイントは以下の2つ。

  • 引数をshiftで受け取る。
  • ()を使って、受け取った引数をそのまま正規表現の置換にかける。

スクリプトを入れると、フラグが表示された。

flag{chosingaflagisthemostdifficultpart}