Bandit level 10→11

거대한리트리버·2023년 8월 11일
0
post-thumbnail

환경 : Linux Ubuntu 22.04

문제

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

풀이

문제에서 비밀번호는 base64 형식으로 encoding되어있다고 했기 때문에
파일을 읽어준 후 decoding하는 과정이 필요하다.

[base64 설명]

  • 데이터를 Base64로 변환하는 것을 encoding, 그 반대를 decoding한다고 표현한다. 64진법을 사용하기 때문에 6bit로 하나의 문자를 표현한다.(2^6 = 64)

  • 6bit를 4개씩 모아 변환하며, 비는 공간(padding)은 =로 채운다.
    따라서 Base64로 encoding 했을 때 데이터의 크기는 33% 증가한다.

  • ASCII text→16진수→2진수→0으로 padding→10진수→Base64(Base64 table)

Base64에 대해 간단히 알아봤으니 비밀번호를 찾아보자.

data.txt 파일을 읽어보자.

확실히 비밀번호 길이보다는 많이 긴 것 같다. 마지막의 ==는 패딩인 것도 확인할 수 있다.

이 데이터는 Base64로 encoding된 상태이니 decoding만 해주면 비밀번호를 얻을 수 있다.
Base64로 decoding하는 코드는 다음과 같다.

echo VGhlIHBhc3N3b3JkIGlzIDZ6UGV6aUxkUjJSS05kTllGTmI2blZDS3pwaGxYSEJNCg== | Base64 --decode

+)echo 명령어

  • C언어의 printf와 비슷하게 리눅스에서 출력을 담당하는 명령어이다.

실행 결과 비밀번호가 잘 나오는 것을 확인할 수 있다.
추가적으로 encoding할 때는 맨 뒤의 --decode를 생략해주기만 하면 된다.

password : 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM

profile
강아지귀여워

0개의 댓글