ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Clear] CCE 2021 ptmd Writeup
    CTF/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

    댓글

Designed by Tistory.