Jaeseo's Information Security Story

RITSEC CTF 2019 - WriteUp - Onion Layer Encoding 본문

Write UP/RITSEC CTF 2019

RITSEC CTF 2019 - WriteUp - Onion Layer Encoding

Jaeseokim 2019. 11. 25. 11:16

Onion Layer Encoding

문제구분 난이도 작성자
MISC JaeSeoKim

문제 내용

문제 풀이

문제를 보면 base16,32,64으로 150번을 인코딩 했다고 알려주고 있습니다. 이 점을 이용해서 계속 반복적으로 디코딩하는 스크립트를 짜봅니다.

import base64
flag = open("onionlayerencoding.txt","r").read()
for i in range(150):
    try:
        flag = base64.b64decode(flag)
    except:
        try:
            flag = base64.b32decode(flag)
        except:
            try:
                flag = base64.b16decode(flag)
            except:
                print("error")
                exit(0)
    print(flag)

이제 이렇게 짠 스크립트의 결과물을 봅니다

#-----------이하 생략-----------------------#
b'NTMzMDcwNDY1NjZCNkM1NjRENkI1QTRBNTQ2QTU2NTU1MTU0NEU1MzU1NkI2RjMxNTc0NTU5MzI1NjQ1NEE1NjU1NDU1NjYxNTY2QjU1MzM1MzU0MzAzRA=='
b'53307046566B6C564D6B5A4A546A565551544E53556B6F315745593256454A5655455661566B55335354303D'
b'S0pFVklVMkZJTjVUQTNSUko1WEY2VEJVUEVaVkU3ST0='
b'KJEVIU2FIN5TA3RRJ5XF6TBUPEZVE7I='
b'RITSEC{0n1On_L4y3R}'
b"D\x84\xd2\x10-'\xd4\xe9\xcb\xe3-\xd1"
error

Process finished with exit code 0

결과물을 보면 150번 다 못돌고 중간에 멈추는 모습을 볼 수 있는데 그전에 플래그 값이 출려되는 모습을 볼 수 있습니다.

RITSEC{0n1On_L4y3R}

참고 포인트

  • pyton base64 라이브러리 이용
Comments