English: Link


이번 대회에서 가장 쉬웠던 문제가 아닐까 합니다.

서버에 접속하면 1자리수와 덧셈, 뺄셈, 곱셈, 지수, 괄호 등으로 이루어진 식이 나옵니다.

이를 받아서 eval해주면 되는데, 중간중간에 함정이 있는데 종류는 다음과 같습니다.

함정1: 숫자가 영어로 나올 때가 있습니다. "THREE - ONE = " 이런 식입니다. 이를 숫자로 바꿔줍시다.

함정2: 중괄호, 대괄호가 나옵니다. 이는 파이썬에서 다른 의미를 지니므로 괄호로 바꿔줍시다.

함정3: 지수의 표현이 ^입니다. 파이썬에서 이는 XOR을 의미하므로 **로 바꿔줍시다.

처음엔 100번만 하면 되는줄 알았는데 1000번을 해야 flag가 나옵니다.

from socket import *

s = socket(2,1)
s.connect(('mathwhiz_c951d46fed68687ad93a84e702800b7a.quals.shallweplayaga.me', 21249))

d = {'one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9', '=':'', '[':'(', '{':'(', ']':')', '}':')', '^':'**'}

for i in range(1000):
    tmp = s.recv(1024)
    print i, tmp
    for j in d.iterkeys():
        if j in tmp.lower():
            tmp = tmp.lower().replace(j, d[j])
    s.send(`eval(tmp)`+'\n')

import telnetlib
tc = telnetlib.Telnet()
tc.sock = s
tc.interact()


Flag: Farva says you are a FickenChucker and you'd better watch Super Troopers 2

+ Recent posts