CSAW CTF Quals 2016 Write-up を少し

person 73spicafolder_openCTFaccess_time 2016-09-19

CSAW CTF Qualification Round 2016 に少しだけ参加したのでwrite-up.自分の都合が合わずチームでの参加ができませんでした.というか他メンバーも都合が合わない人が多かったためチーム自体参加していないです.しかし、全く解かずにwrite-upを見るよりも少しは問題を見た方が良いと思い,一人でちょっとだけ解きました.

(2016/09/29) miscの2問のプログラムちょっと直しました.

手を付けた問題(チラ見含む)

  • Notesy 2.0(test submit)
  • Sleeping guard (crypto 50)
  • Coinslot (misc 25)
  • Regexpire (misc 100)
  • Neo (crypto 200)
  • Gametime(rev 50)

解けた問題

  • Notesy 2.0 (test submit)
  • Coinslot (misc 25)
  • Regexpire (misc 100)
  • Gametime (rev 50)

cryptoの問題が解けず落ち込んでmiscやってました…

 

Write-up

Notesy 2.0 (test submit)

フラグ送信テストです.

The flag is abcdefghijklmnopqrstuvwxyz

Gametime (rev 50)

チート系かと思ったが,普通にゲームにクリアすればフラグが貰えた.

The flag is no5c30416d6cf52638460377995c6a8cf5

Coinslot (misc 25)

nc misc.chal.csaw.io 8000

プログラミング初級的な授業でやりそうなやつ.金額が指定されて,その金額を満たす最小の紙幣と硬貨の数を求める(28400円は,10000円札2枚,5000円札1枚,1000円札3枚,500円玉0枚,100円玉4枚,以下略).

1行目に金額が送られてきて,2行目以降に金額の大きい紙幣から順に枚数を入力.pennies (1c)まで入力し終えると正誤判定され,間違っていれば以下のようにincorrectとなる(この場合は,5cの時点でincorrectとなり,答えは1なのに0になってるよと言われる).

 

 

 

これを計算して送るだけのプログラムを書けば良いのです.書けばよいのですが,400ラウンドあり中々終わらなかった.(先日勉強会で解き直したら300ラウンドでした.400という数字はどこから出てきたのか…)

100ラウンドごとに金額の桁が上がっていき,300ラウンド目くらいから10,000ドル紙幣を使うくらいになる.

The flag is flag{started-from-the-bottom-now-my-whole-team-fucking-here}

(追記)

直観的には上のプログラムが分かりやすいですが,答えのsendと$10.000: $5.000…の部分のrecvをまとめて行った方が高速に処理ができるのでそうした方が良さそうです.

 

Regexpire (misc 100)

nc misc.chal.csaw.io 8001

Regexpireは正規表現のこと.繋ぐと”Can you match these regexes?”という文章の後,正規表現が送られてくる.

送られてきた正規表現にマッチする文字列を送れば良い.マッチすれば何でも良い.正規表現弱者だったので調べて,ごり押しで解けそうなコードを書きました.

以下のようにひたすら正規表現にマッチする文字列を送る.

reg_resultreg_result2

1000ラウンドありましたが,一つあたりの時間が短いので,比較的すぐにフラグが出ました.

The Flag is flag{^regularly_express_yourself$}

(追記)

メンバーの先輩が既存のモジュールを発見いたしましたことをご報告いたします...orz

rstrというモジュールのxeger関数は,引数に正規表現を与えて,それにマッチする文字列を返してくれます(この問題やんけ…).

ただ,戻り値には途中に改行を含む場合があります.本問題にて,改行はsendする際に邪魔になりますので,改行が出なくなるまで繰り返し実行するという処理が必要になるそうです.

 

 感想

miscのようなプログラミング問題は好きですが,セキュリティとはほとんど関係がないのでもっと別の問題解けるようにしたいと感じました.

一応チームではCrypto担当なのに解けず….問題は見たので強者様のWrite-upを拝見させていただこうと思います.

余談

miscで書いたプログラム,最後はエラーで止まります←

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">