Sechack

HackCTF - 달라란 침공 풀이 본문

Wargame

HackCTF - 달라란 침공 풀이

Sechack 2021. 5. 12. 12:08
반응형

 

nc서버 하나 주길래 접속해보니까 3개의 메뉴가 있다. 1번을 선택해보니까 간단한 사칙연산이 나온다. 계산기로 계산하고 보내보니까 1차 침공 성공이라면서 2차 침공을 하라고 또다시 수식을 준다. 사칙연산 노가다 문제로 추측해볼 수 있다. 3개의 메뉴 전부 봤는데 전부 계산 노가다였다. 그래서 바로 pwntools를 이용해서 자동화 스크립트 짜줬다.

 

 

from pwn import *

def parser(data):
    if b"+" in data:
        arr = data.split(b"+")
        first = int(arr[0])
        second = int(arr[1])
        r.sendlineafter(": ", str(first + second))
    elif b"-" in data:
        arr = data.split(b"-")
        first = int(arr[0])
        second = int(arr[1])
        r.sendlineafter(": ", str(first - second))
    elif b"*" in data:
        arr = data.split(b"*")
        first = int(arr[0])
        second = int(arr[1])
        r.sendlineafter(": ", str(first * second))
    elif b"/" in data:
        arr = data.split(b"/")
        first = int(arr[0])
        second = int(arr[1])
        r.sendlineafter(": ", str(int(first / second)))
    else:
        print("error")

r = remote("ctf.j0n9hyun.xyz", 9003)

r.sendlineafter("input ) ", "1")
r.recvline()
data = r.recvuntil("\n").strip()

parser(data)

for i in range(19):
    r.recvline()
    r.recvline()
    data = r.recvuntil("\n").strip()
    parser(data)
    print(i)

r.sendlineafter("input ) ", "2")
r.recvline()
data = r.recvuntil("\n").strip()

parser(data)

for i in range(29):
    r.recvline()
    r.recvline()
    data = r.recvuntil("\n").strip()
    parser(data)
    print(i)

r.sendlineafter("input ) ", "3")
r.recvline()
data = r.recvuntil("\n").strip()

parser(data)

for i in range(39):
    r.recvline()
    r.recvline()
    data = r.recvuntil("\n").strip()
    parser(data)
    print(i)

r.interactive()

 

주의할점이 나눗셈도 정수로 보내야 하므로 연산결과를 int함수로 감싸줘야한다. 이거 캐치 못해서 삽질 꽤 했다.

 

보니까 1, 2, 3번 메뉴의 문제 수도 다르고 연산하는것도 다르다.

 

1번은 +, -가 나오고 2번은 *, /가 나오고 3번은 사칙연산이 전부 나온다. 근데 뭐 어차피 parser함수에 전부 때려박아서 크게 상관은 없었다. 각각 메뉴마다 문제 수가 다른데 이거는 그냥 for문에다가 1000같이 큰 숫자 주고 터질때 출력되는 i를 보면 몇문제인지 알 수 있다.

 

 

pwntools에 익숙하지 않은 분들에게는 많은 도움이 되는 문제인것같다.

 

 

 

모든 연산을 마치면 플래그가 나온다.

 

플래그는 직접 푸시고 얻으시길 바랍니다.

반응형

'Wargame' 카테고리의 다른 글

김민욱님이 주신 웹해킹 문제 풀이  (0) 2021.05.28
LOS - iron_golem 풀이  (0) 2021.05.22
HackCTF - 훈폰정음 풀이  (0) 2021.05.12
HackCTF - wishlist풀이  (0) 2021.05.11
HackCTF - babyfsb 풀이  (0) 2021.05.11
Comments