CTF/MISC

[HackingCampCTF] plus minus - MISC / Pwntool

SecurityMan 2023. 6. 7. 11:00

 

이전에도 많이 풀어봤던 유형의 MISC 문제

 

pwntool 을 연습하기에 좋은 문제인것 같다.

 

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

 

반응형

 

문제에서는 원격 접속할 수 있는 주소가 주어진다.

 

 

원격으로 접속하면

 

다짜고짜 수학문제를 낸다.

 

4931 + 3542 을 계산해서 답을 냈더니

 

Succeed! 가 출력되면서

 

다음 문제가 또 나온다.

 

암산을 잘한다면 별다른 노력없이 그냥 바로 답써도 되겠지만

 

아쉽게도 그런 능력이 없어서 코드를 작성해야 한다.

 

from pwn import *

p = remote('ctf-hackingcamp.com', 3280)

for i in range(100):
    a = p.recvuntil(': ')
    print(a)
    a1 = str(a)
    b = a1.split(' ')

    c1 = b[1]
    c2 = b[2]
    c3 = b[3]

    if b[2] == '+':
        d = int(b[1]) + int(b[3]) 
        p.sendline(str(d))
        p.recvuntil("[!] Succeed!")
    elif b[2] == '-':
        d = int(b[1]) - int(b[3])
        p.sendline(str(d))
        p.recvuntil("[!] Succeed!")
    elif b[2] == '*':
        d = int(b[1]) * int(b[3])
        p.sendline(str(d))
        p.recvuntil("[!] Succeed!")
    elif b[2] == '/':
        d = int(b[1]) / int(b[3])
        d = int(d)
        p.sendline(str(d))
        p.recvuntil("[!] Succeed!")
    else:
        print("no")

p.interactive()

 

pwntool 을 사용해봤다면 어렵지 않게 구현할 수 있다.

 

서버의 출력값을 " "(스페이스) 를 기준으로 구분해서

 

연산자와 숫자를 구분해 저장한다.

 

그리고 연산자가 무엇인지 식별한 다음

 

연산자에 맞게 계산하고 sendline 으로 보내보리면 된다.

 

몇번해야될지 몰라서 횟수는 대충 100번이라고 했는데

 

우연히 100개가 딱 맞았다.

 

 

코드를 실행시키면

 

마지막까지 연산이 수행된 후 플래그를 만날 수 있다.

반응형

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

[DanteCTF] Flag Fabber - MISC / PCB  (73) 2023.06.17
[Really Awesome CTF] Missing Tools - MISC / Jail Escape  (69) 2023.06.09
[D^3CTF] d3gif - MISC / PIL  (88) 2023.05.29
[D^3CTF] d3readfile - MISC / locate  (71) 2023.05.27
[angstromCTF] Physics HW - MISC / Zsteg  (66) 2023.05.25