-
[Clear] CCE 2021 ptmd WriteupCTF/CCE 2021 2021. 9. 27. 19:11
제공되는 서버에 nc로 접속하면 +,-,*,/ 연산이 주어진다. 짧은 제한시간안에 100문제를 해결해야 플래그가 나온다.
python pwntools를 활용하여 수식을 분석하고 답을 전송하는 코드를 통해 플래그 획득이 가능하다.
from pwn import * import base64 import binascii import sys def int_or_float(x) : ##### ........................................................(1) if "." in x : return float(x) else : return int(x) def calc(x,y,z) : if x + y == z : return b'+' elif x - y == z : return b'-' elif x * y == z : return b'*' elif x / y == z : return b'/' else : print("error") p=remote("20.194.123.97", 11111) i=0 while(i<101) : if i==100 : print(p.recvall()) break firstline = p.recvuntil('>>') print(firstline) x = firstline.split(b'\n')[-2].split(b' ')[0].decode('utf-8') y = firstline.split(b'\n')[-2].split(b' ')[2].decode('utf-8') z = firstline.split(b'\n')[-2].split(b' ')[4].decode('utf-8') p.send(calc(int_or_float(x), int_or_float(y), int_or_float(z))) i += 1 print(i) #print(p.recvuntil('>>')) p.close()
주의할점은 수식에 소수가 활용되는 경우가 있기 때문에 (1)과 같이 .이 포함될 경우 float으로 형변환을 해주는 과정이 필요하다.
FLAG = cce2021{70045baef6c3f6f133fa40824cf8185ac0e9fa3f2874a033f431c6d8f9d4517a07a32b8f3b42816d3c850f9b04441d14d85c87d4f1394427}
반응형'CTF > CCE 2021' 카테고리의 다른 글
[Clear] CCE 2021 GS25 Writeup (0) 2021.09.27