🌱초급

[Bandit] Level 10 → Level 11

Bandit Level 10 풀이 과정을 설명합니다.

2분 읽기

문제

Level Goal

The password for the next level is stored in the file data.txt, which contains base64 encoded data

  • 패스워드는 data.txt 속에 있고, base64로 인코딩되어 있다고 하네요.

    • 이번 문제는 인코딩된 문자열을 디코딩할 수 있느냐?를 물어보는 문제입니다.


해결

image.png
  • ls -al 명령어를 통해 data.txt 파일을 확인할 수 있습니다.

image.png
  • file 명령어를 통해 data.txt 파일의 형태를 확인해보니 txt 파일이네요.

image.png
  • cat 명령어를 통해 data.txt 파일을 읽어보면, encoding 된 문자열들이 출력됩니다.

    • 암호화된 것과 인코딩되었다는 것은 엄연히 다른 말입니다. (상세한 것은 구글링해보기)

    • 어쨌든 핵심은 인코딩은 키가 필요하지 않아요.

  • 쉽게 이야기해보자면, apple이라는 평문을 data.txt에 있는 값처럼 encoding 기법을 통해 우리가 알아보기 어려운 형태로 변환할 수 있어요. 문제에서 활용된 기법은 base64입니다. (참고로 마지막 끝에 ==이 붙는 특징을 갖고 있습니다.)

  • 이때, 나만 아는 키를 가지고 apple을 저 이상한 글자로 바꾸고 싶다면, 우리는 이 bandit level 10을 풀 때 굉장한 난이도를 갖게 됩니다. 문제를 만드신 분이 어떤 키로 apple를 저 이상한 글자로 만드셨는지까지 알아내야 하기 때문입니다.

    • 이렇게 키를 갖고 만들게 되면 암호화를 하게 된 것이고, 이상한 글자(암호문)에서 apple(평문)을 알아내는 과정을 복호화라고 합니다.

    • 그렇지만 encoding은 키를 필요로 하지 않기 때문에 간단합니다. encoding 규칙에 따라 치환만 해주면 됩니다. 그래서 구글에 base64 decoder만 검색하셔도 online tool이 굉장히 많이 제공되는 것을 보실 수 있습니다.

  • 그렇기 때문에 encoding과 encrypt는 엄연히 다른 말이고, 개념을 달리 알고 있는 것이 맞습니다.

  • 저도 지금 제 지식으로 작성하고 있는 것이다 보니 오개념이 있을 수 있습니다.

    • 틀린 부분은 댓글로 알려주시면 감사하겠습니다.

  • 어쨌든, encoding되어 있는 이상한 글자를 평문으로 바꾸고 싶다면 decoding을 해야합니다. decrypt가 아닌거죠.

  • 리눅스에서는 base64에 대해서 encoding/decoding 할 수 있는 명령어와 옵션을 제공하고 있습니다.

image.png
  • base64 명령어-di 옵션을 추가하면 data.txt 를 decoding 하여 평문을 구할 수 있습니다.

    • decoding option : -di


핵심

base64

  • 리눅스용 encoding, decoding 도구

  • 문자열 또는 파일 입력가능

  • 8비트 이진 데이터(실행 파일, zip 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이뤄진 문자열로 바꾸는 인코딩 방식

  • encoding 시, base64 [file] 의 형태로 사용

  • decoding 시, base64 --decode(-d) [file] 의 형태로 사용

image.png


댓글

이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!

댓글을 작성하려면 로그인하세요

로딩 중...
공유
sikk

sikk

Author

보안을 공부하는 개발자입니다. Web2/Web3 보안과 시스템 해킹에 관심이 많습니다.

뉴스레터 구독하기

새로운 포스트가 올라오면 이메일로 알려드려요!