SECCON 2014 writeup 〜No技術編〜

  • 0
    Like
  • 0
    Comment
    More than 1 year has passed since last update.

    SECCON 2014

    SECCON、CTFを知らない方へ
    http://www.seccon.jp/p/seccon.html

    いわゆるセキュリティの大会です。

    本write up

    パソコンの技術力はなくても何問かは解けるんですよという話
    ・unknown 100(詰め将棋)
    ・programming 300(あみだくじ)

    詰め将棋(unknown 100)

     詰将棋(読み方:つめしょうき)を解け!
     13手目を打った時点で、駒が乗っているマスの番号を,(カンマ)
     区切りで書いたものがフラグとなる。
    
     例:
     1に王、8と9に金がある場合「詰み」となる(8に金を打つことで詰んだ)。
     この状態で、それ以外のマスには駒がない場合、FLAG{1,8,9}となる(1,8,9のみ駒がある)。
    

    shoki.png

    【解法】
    将棋部なので、解きました(どや顔)
    とはいえ、13手詰と書いていたので13手で解いたのですが、
    どうやら11手詰の手順があるらしく、そこまでは深読みしませんでした。ポイントは、24に逃がさないことと、金をどちらかといえば温存するのが本詰将棋です。
    [13手詰の解]
    22銅 12王 5特 同王 10平 12王 11平(銀を取る) 同王 4銀打 16王 15金 23王 29金

    変則的ですが、手数が増えたら(21手以上ぐらい?)独力で解くのは1時間以上かかると思うので、普通の将棋の詰め将棋のソースを取ってきて、改変する形になると思います。

    あみだくじ(programming 300)

    本文無し(ファイルが一つあるのみ)
    

    これは地獄を見た問題です。

    $ file
    amida: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, stripped

    ubuntu殿のPCをひっぱりだして起動して実行

    No.1
    1 2 3 4 5 6 7 8
    |-| |-| | | |-|
    | | | | | |-| |
    | | | | | | |-|
    |-| | |-| | | |
    | | |-| |-| |-|
    |-| | |-| | | |
    | |-| | |-| |-|
    |-| |-| | | | |
    | | | | |-| | |
    | | |-| | | |-|
    |-| | | |-| | |
    | | |-| | |-| |
    | | | | |-| | |
    | |-| | | |-| |
    | | |-| | | |-|
    | | | | | |-| |
    | |-| | |-| |-|
    |-| |-| | | | |
    | | | | | |-| |
    *
    ?

    あみだくじですね。*から数字までたどり着くところの数字を入力します。1秒以内ぐらいで入力しないと、「TooSlow」と言われて終了しますし、間違えると「Wrong」といわれて終了します。解くとNo2。解くとNo3。

    問題はランダムではないようなので、最初は、以下のように進めていました。

    $ echo 4 1 6〜(略)〜〜|./amida

    10問、20問と独力で解いて行く中で、あみだくじが上下反転したり、左右の棒の幅が広がったりとしてました。

    途中、メンバーが、「date -s 〜」コマンドをwhileで叩くとtooslowと言われないことが判明したので、そこからは、時間を止めてひたすらあみだくじを解いて行きました。

    【解法】
    時間を止めて1000問解くとflag。

    600問といたぐらいから、普通にあみだくじ解法スクリプト書くほうがよかったと思いました。