= 2014年MMA新入生歓迎会CTF(終了しました) = <> CTF(Capture The Flag)はプログラミングやセキュリティなどのコンピュータ技術を競うコンテストです。主にクイズ形式のものと、サーバーに対して攻撃したり防御したりする攻防戦形式の2種類が存在します。 MMAでは2013年より積極的に各種CTFに参加しています。 == ルール == *2014/04/03から2014/04/14までの間の開催です。 *終了まで、広く一般に問題の解法を公開することを禁止します。 *問題が解けたら、新歓期間中はA棟403号室、新歓終了後はMMA部室(サークル棟2階)に居るMMA部員に確認してもらってください。解けた問題に応じて賞品があります。気軽に訪れてください。なお1つの問題の中に複数の問いが含まれている問題については、各問いごとに採点します。 *問題は部室や新歓ブースでも配布しています。 == 問題 == === KANJI? === 難易度:: ★ ジャンル:: トリビア 出題者:: [[imadahirosi]] 正解者:: 2人(quartorz, なにものでもない) これはあるコマンドを表している。そのコマンドを答えよ。 {{attachment:kanji.jpg}} === Object === 難易度:: ★ ジャンル:: 暗号 トリビア 出題者:: [[nomeaning]] 正解者:: 5人(gentaro, anch0y, mo, DITA, キモト) 次の暗号文を解読し、質問に答えよ。 {{{ Xibu't uif obnf pg uif bsu xpsl jo gspou pg Cvjmejoh Fbtu-3? Qmfbtf botxfs jo Kbqboftf. }}} === Punch === 難易度:: ★ ジャンル:: トリビア 出題者:: [[nomeaning]] 正解者:: 2人(mo, なにものでもない) なんと書かれているでしょう。 {{{ _________________________________________________ / | |] ]] ] ] ] ] ] | | ] ] ]] ] ]] | | ] ] ] | |11]111111111111111111]11111111111111111111111111| |222222]22222222222222222222222222222222222222222| |3]33333333]]3333]3333333333333333333333333333333| |4444444444444]44444]]444444444444444444444444444| |555555555]5555]555555555555555555555555555555555| |]6666666]666]6666]666666666666666666666666666666| |777]77777777777777777777777777777777777777777777| |888888888888888888888888888888888888888888888888| |99999]999999999999999999999999999999999999999999| |________________________________________________| }}} === Universe === 難易度:: ★ ジャンル:: トリビア 出題者:: [[r_acacia_]] 正解者:: 2人(mo, なにものでもない) Get the flag. {{attachment:bf.png}} === Tatami === 難易度:: ★(問1) ★★(問2, 問3) ジャンル:: 数学 プログラミング 出題者:: [[nomeaning]] 正解者:: 5人(gentaro, umashika, shin, なにものでもない, DITA), 3人(DITA, なにものでもない, shin), 0人() 縦幅$ 3 $、横幅$ 2n $の長方形のマス目に、$ 1 \times 2$のタイルを重なり合うことなく、全てのマスを覆うように敷き詰めることを考える。 例えば$ 3 \times 2$のマス目の場合、次の3通りの敷き詰め方が存在する。 {{attachment:tiles.png}} 問1:: $ 3 \times 6 $の長方形のマス目に$ 1 \times 2 $のタイルを敷き詰めるパターン数を求めよ。 問2:: $ 3 \times 100 $の長方形のマス目に$ 1 \times 2 $のタイルを敷き詰めるパターン数を求めよ。パターン数は大きくなりすぎるので、$ 2^{64} $で割った余りを答えよ。 問3:: $ 3 \times 2n $のマス目にタイルを敷き詰めるパターン数を$ f(n) $と表すことにする。このとき、`$$ \sum_{i=1}^{10^{16}} f(i)^3 $$`を求めよ。ただし、答えは大きくなりすぎるので、`$ 2^{64} $`で割った余りを答えよ。 === TelnetサーバーのIPアドレスを答えよ。 === 難易度:: ★★ ジャンル:: ネットワーク 出題者:: [[imadahirosi]] 正解者:: 3人(gentaro, anch0y, なにものでもない) {{attachment:telnet.png}} === 江夢絵 無影 === 難易度:: ★★ ジャンル:: 偵察 出題者:: [[ytoku]] 正解者:: 0人() 江夢絵 無影氏は最近隠れて絵を書き始めたようだ。君の任務は彼の描いた絵を探し出すことである。健闘を祈る。 === unskipk === 難易度:: ★★ ジャンル:: バイナリ フォレンジック 出題者:: [[ytoku]] 正解者:: 1人(anch0y) Get the flag. {{{ 0000040: 0000 b3b5 2504 b8dc 7212 d315 328b 153c ....%...r...2..< 0000050: 3402 3415 6c15 7463 8a4b 73e3 3315 0280 4.4.l.tc.Ks.3... 0000060: 3827 3f1d 4473 d912 3605 0050 4b01 021e 8'?.Ds..6..PK... 0000070: 0314 0002 0008 0054 1582 44ec d1e9 4029 .......T..D...@) 0000080: 0000 0069 0000 0008 0018 0000 0000 0001 ...i............ 0000090: 0000 00a4 8100 0000 0066 6c61 672e 7478 .........flag.tx 00000a0: 7455 5405 0003 8ffa 3a53 7578 0b00 0104 tUT.....:Sux.... 00000b0: e803 0000 04e8 0300 0050 4b05 0600 0000 .........PK..... 00000c0: 0001 0001 004e 0000 006b 0000 0000 00 .....N...k..... }}} === Leaky Commitment === 難易度:: ★★★ ジャンル:: 暗号 出題者:: [[ytoku]] 正解者:: 0人() Get the flag. {{{#!highlight python # -*- coding: utf-8 -*- from Crypto.Util.number import bytes_to_long import Crypto.Random.random as random n = 111895820447848398833154164049604827293489536149098582911503536545786709920126490310648014595161362589852007375751605057086275433447515332995637611070227862690921976976903471086435444973906568373071049321771477223840797381651370286025243307357326025387711988561293916360504512168560206699040759690577943719467 FLAG = "*CENSORED*" def commit(m): e = (1<<14) | random.getrandbits(14) # For compatibility, e must be in signed short :-( r = random.randrange(n) t = pow(m + r, e, n) c = (t, r, e) return c def open_commitment(m, c): (t, r, e) = c return pow(m + r, e, n) == t for i in range(2): print "%d, %d, %d" % commit(bytes_to_long(FLAG)) }}} 実行結果 {{{#!highlight text 98855442035570258903182560550333160561120277371740735449521028516877754724801900324632437799773043740484615509134258762973570806142067172948684452521512919260852013254687425371750433912988526109028607756835484284640096355007465798844486528620714301048051591408896419691697463858819870838068910514599763227999, 76346658578205172199620597295192186675340280494498049873836332499382916758493810184939920185992288936343293747741483484603869354011619302755855935469557007140409746603003295314082376836338910850104341679244718519471588505465395901612495107598676619995955657426770455654845308752905216418717681977167492837020, 27877 29470234052520553888750153336995149073925167580708824280649748083373538718062076186036195182031980369132661293884535538078345294951307317447109444005807982633585282177242307625244379892038083901972560085897620766641222812661369874578260760886336834177355552220868321804066909936978488965383247261239191091263, 67497987076884796159425417953912199922569574484935405993218223181103368354807107898349599310443950816164867372290177146568094410279310207322835688055482111471327922463439937590707511611891418259904783662541313101015378231638722951232518083550734178777908815403503062623051716668007015134781992593163651965389, 22740 }}}