CTF/MISC

[2021CCE] ptmd - MISC / Python / Pwntool

SecurityMan 2023. 8. 13. 11:00

 

2021CCE에 나왔던 MISC 문제

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

대회 문제들을 보면 컨셉이 기본에 충실한 문제인듯 하다.

 

이번 문제도 기초적인 프로그래밍 능력을 평가한다고 한다.

 

반응형

 

 

nc 를 이용해 원격으로 접속해보면

 

이런 문구가 출력된다.

 

calc 챌린지라면서 ? 부분에 어떤 기호가 오는지 채워넣으라고 한다.

 

100 스테이지 까지 있고, 클리어해야 플래그를 준다고 적혀있다.

 

문제 제목인 ptmd 는

 

plus, times, minus, devide 의 약자인듯 하다.

 

이전에도 블로그에서 비슷한 문제를 풀이한 적 있었다.

(https://hackingstudypad.tistory.com/529)

 

그때랑 차이점은 연산의 결과를 맞추는 것이 아니라

 

어떤 연산인지 맞추는것이라는데 있다.

 

from pwn import *

p = remote('20.194.123.97', 11111)

for i in range(255):
    problem = p.recvline()
    print(problem)
    
    if ' = ' in str(problem):
        solve = str(problem)

        solve2 = solve.split(' ')

        solve2[0] = solve2[0][2:]
        solve2[4] = solve2[4][:-3]
        print(solve2[0],solve2[2],solve2[4])

        if float(solve2[0]) + float(solve2[2]) == float(solve2[4]):
                p.send('+')
        elif float(solve2[0]) - float(solve2[2]) == float(solve2[4]):
                p.send('-')
        elif float(solve2[0]) * float(solve2[2]) == float(solve2[4]):
                p.send('*')
        elif float(solve2[0]) / float(solve2[2]) == float(solve2[4]):
                p.send('/')
        else:
            print('no')

p.interactive()

 

pwntool 을 이용해 문제를 해결하면 된다.

 

recvline() 으로 한줄씩 읽어온 다음에

 

읽은 line에 ' = ' 가 포함된 경우만 조건문으로 들어가게 된다.

 

조건문에서는 공백으로 수식을 잘라 저장하고

 

slove2[0]에 첫번째 숫자, solve2[2]에 두번째 숫자,

 

slove2[4]에는 연산 결과값이 들어가게 된다.

 

그다음 slove2[0]과 solve2[2] 를 가지고

 

사칙연산을 수행해본 다음

 

어떤 연산을 수행했을때 결과값이 slove2[4] 와 같은지 알아내서

 

연산자를 찾아내는 방식이다.

 

 

코드를 실행시키면

 

잠시 뒤에 플래그를 찾을 수 있다.

반응형

'CTF > MISC' 카테고리의 다른 글

[COMPFEST CTF] Promotional Video - MISC  (153) 2023.08.06
[n00bzCTF] Google Form 2 - MISC / ChatGPT  (89) 2023.06.25
[n00bzCTF] Google Form 1 - MISC  (79) 2023.06.24
[DanteCTF] HellJail - MISC / Jail Escape  (66) 2023.06.20
[DanteCTF] Hanging Nose - MISC / 3D / STL  (70) 2023.06.19