[CTF write up] Codegate CTF 2022 Junior - UDgame : UP and Down Misc

2022. 2. 27. 18:11CTF write up

from pwn import *
import random

context.log_level = 'debug'

p = remote("52.79.50.189", 4321)


def check(inp):
    p.sendlineafter(b':',str(inp))
    res = p.recvuntil(b'!')
    print(res)
    if b'codegate' in res:
        p.interactive()
    if b'DOWN' in res:
        return 'DOWN'
    elif b'UP' in res:
        return 'UP'
    elif b'funny' in res:
        return '??'
    else:
        return 'True'

con = 1
p.sendlineafter(b'>',b'y')
while(True):
    if con == 0:
        break
    a = 1000000000000

    b = int(a / 2)
    a = int(a/2)
    while(True):
        res = check(a)
        if 'DOWN' in res:
            b = int(b / 2) + 1
            a = int(a - b)
        elif 'UP' in res:
            b = int(b / 2)
            a = int(a + b) + 1
        elif '??' in res:
            con = 1
            break
        else:
            con = 0
            break

print(a)

p.interactive()

 

아무리해도 플래그가 안나와서 계속 수정하다보니 코드가 못생겨졌다. 결국 | grep codegate 을 이용하여 플래그를 건져냈다. 상당히 오래동안 실행해야된다...