satto1237’s diary

s4tt01237’s diary

ラーメンとかCTFとかセキュリティとか

ツ令和CTF Write-up (供養)

はじめに

令和CTFに参加しました.

成績

Misc全完して187位(かなしい)

f:id:satto1237:20190501022246p:plain

フラグの例は?

平成最後の最後、令和最初のSECCON CTFにようこそ。 フラグはSECCON{reiwa}です。

アプローチ:問題文を読む

SECCON{reiwa}

bREInWAc

元号が変わる。記号も変わる。

令和和和和和和和和和和和和和和和和「令和
和和和和令和和和和令和和和和和和和令和和
和和和和令和和平平平平平成」令和和和。令
和和和和和。成成。。平成成成成。成。令令
和和和和和和和和和和和。令和和。平平平和
和和和。令和和。和和和和。令令和和和和和
和和和和和和和。平平平和和和和和和和和和
和和和和。成成成成成成成成。令成成成成成
成成成。令令。成成成成成。成成成成成成。
令和。平平和和。令令令和和和和和和和和和
和。

アプローチ:適当に置換して実行

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

if __name__ == '__main__':
    dic = {'令':'>', '和':'+', '「':'[', '」':']', '。':'.', '平':'<', '成':'-'}

    with open('./flag.bw') as f:
        lines = [s.strip() for s in f.readlines()]

    flag = ''
    for line in lines:
        for x in line:
            flag += dic[x]

    print(flag)
>++++++++++++++++[>+++++>++++>+++++++>++++++>++<<<<<-]>+++.>+++++.--..<----.-.>>+++++++++++.>++.<<<++++.>++.++++.>>++++++++++++.<<<+++++++++++++.--------.>--------.>>.-----.------.>+.<<++.>>>++++++++++.

sange.fi

SECCON{bREIn_WAnic!}

零は?

nc zerois-o-reiwa.seccon.jp 23615

example

[1/100]
0=40-?
?=40
[2/100]
0=45*18-?
?=

アプローチ:SymPyに頑張ってもらう

www.sympy.org

100問解くとflagがもらえるっぽいので100問解くソルバを書く.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from socket import *
from sympy import *
from sympy.parsing.sympy_parser import parse_expr

if __name__ == '__main__':

    s = socket(AF_INET, SOCK_STREAM)
    s.connect(('zerois-o-reiwa.seccon.jp', 23615))

    for i in range(101):
        rec = s.recv(1024).decode('utf-8')
        print(rec)
        rec = s.recv(1024).decode('utf-8')
        prob = rec.split('\n')[0].split('=')[1].replace('?','x')
        print(prob)
        ans = solve(Eq(parse_expr(prob),0))
        if ans == True:
            print('True')
            s.send(str(0).encode('utf-8') + b'\n')
        else:
            print(ans[0])
            s.send(str(ans[0]).encode('utf-8') + b'\n')
[snip]

[98/100]

96-39+52*89-84+68*73-87+30*79+79*99-61*34+47-62-84*18+77-99*61+5+2*72-38*55+48-88*99-21+30*18+60-7+52-29*70*50-15+88-87+8*34+55*70-3+18*64-55+37*22-10*35+82-43+18*6-40+65*89-6-0+43*76+85*41-37-42*65+69*96+19-38*70-4+66-92*86+47*2-64+36*41+71-23-57+90*8*30-37+25+32*23-47+63-15*94*32+x
110987
[99/100]

60-87+44*7+51-34*80+70*43-18-25*4+97*63-35+16+93*51-8*36-57+47-76+72*62*17-60+79-96+58*92+97*58-96-4*51+17-25+9*35-26*61+39+67*15-36-51+90*71+40-77*30*98+47-3*21-23+12*88-74+20-70+35*34-82+49*97-31*34+19+11*74-68+56-9*17-36*94+61*20+58-16-81*24+45-99+46*94*66-0+8+10-28*46+x*0-62-84+31-163413
True
[100/100]

12+37-58*62+51*1-26+1-2*35-50+63*36*23-18+16-36+88*65+77*48-74+50-30*53-68*95+12-29*95+32+72-17*36*62-22+3-96+14*28+27*83-97*87-55+11+75*35-67-66*15+6*3+17-26-13+14*89*45+3-67+17-88*48-45*71+68-40+50*2*91+14-42-18+51*48*43-64+61*58+51-22*82-61+89+28-93*51+68*54-91*6-17+62+10*35-88-0*x+2-168262
True
Congratulations!

The flag is SECCON{REIWA_is_not_ZERO_IS}.
(Enter RETURN key if connection is not disconnected)

SECCON{REIWA_is_not_ZERO_IS}

まとめ

  • 平成終わったのにQRコード解けなくてツ令和