この大会は2019/4/30 23:00(JST)~2019/5/1 2:00(JST)に開催されました。
この大会は個人戦。結果は210点で858人中107位でした。
解けた問題をWriteupとして書いておきます。
フラグの例は?(Misc)
問題にフラグが書いてあった。
SECCON{reiwa}
bREInWAck (Misc)
このファイルが添付されている。
令和和和和和和和和和和和和和和和和「令和 和和和和令和和和和令和和和和和和和令和和 和和和和令和和平平平平平成」令和和和。令 和和和和和。成成。。平成成成成。成。令令 和和和和和和和和和和和。令和和。平平平和 和和和。令和和。和和和和。令令和和和和和 和和和和和和和。平平平和和和和和和和和和 和和和和。成成成成成成成成。令成成成成成 成成成。令令。成成成成成。成成成成成成。 令和。平平和和。令令令和和和和和和和和和 和。
問題タイトルから推測しても、Brainfuck言語で、使われている2バイト文字と1:1対応しているようだ。使われている文字の意味と数を考え、以下のように置き換えた。
>++++++++++++++++[>+ ++++>++++>+++++++>++ ++++>++<<<<<-]>+++.> +++++.--..<----.-.>> +++++++++++.>++.<<<+ +++.>++.++++.>>+++++ +++++++.<<<+++++++++ ++++.--------.>----- ---.>>.-----.------. >+.<<++.>>>+++++++++ +.
以下のBrainfuck言語のオンラインインタプリタでこのコードを実行する。
sange.fi
SECCON{bREIn_WAnic!}
零は? (Misc)
ncで接続すると?を含む式が出てくる。式が成り立つ?を求めていくPPCの問題のようだ。99問目と100問目は方程式として成り立っていないので、解なしの場合は0で答えるようにする。
import socket import re import sympy def recvuntil(s, tail): data = '' while True: if tail in data: return data data += s.recv(1) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('zerois-o-reiwa.seccon.jp', 23615)) for i in range(100): data = recvuntil(s, '?=') formula = data.split('\n')[-2].replace('?', 'x').split('=')[1] sol = sympy.solve(formula) if len(sol) == 1: ans = sol[0] else: ans = 0 print data + str(ans) s.sendall(str(ans) + '\n') data = recvuntil(s, '\n').rstrip() print data data = recvuntil(s, '\n').rstrip() print data
SECCON{REIWA_is_not_ZERO_IS}