본문 바로가기
Linux/bandit

Level 10 -> Level 11

by ㅇㅅㅇ.. 2024. 1. 2.

 

 

  • login PW: G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
  • 문제설명: PW는 base64 인코딩된 데이터를 포함하는 data.txt에 있다.

 

base64는 인코딩 방법 중 하나입니다.

여기서 주목할 점은 인코딩과 암호화는 데이터의 모양을 바꿔준다는 공통점이 있지만 엄연히 다른 것 입니다.

 

인코딩 VS 암호화

  • 인코딩: key를 사용하지 않으므로 어떤 걸로 인코딩 했는지 알면 디코드가 가능
  • 암호화: key를 사용하기 때문에 key가 없으면 해독이 불가

Base64

base64가 인코딩하는 원리는 다음과 같습니다.

[ 문자열 => ASCII binary => 6bit씩 자른다 => base64 매핑 ]

 

 

 

예시로 Man 이라는 글자를 base64 인코딩을 한다면 M, a, n을 각각 ASCII 값으로 바꾼뒤 이를 이진수로 바꿉니다.

이진수로 바꾼 각 비트를 버퍼의 위쪽 부터 6bit씩 자릅니다. 자른 6bit를 Base64 색인표의 값으로 바꾸면 인코딩이 완료됩니다. 만약 ASCII binary를 6비트씩 잘랐을 때 자리가 남으면 그 자리는 "=" 문자로 패딩이 되며, 이러한 이유로 인코딩된 값의 끝부분에 "=" 문자가 있다면 높은 확률로 base64 인코딩을 의심할 수 있습니다.

 

아래의 # cat data.txt 의 출력값에서도 마지막 부분에 "=="가 있음을 확인할 수 있으며 base64 명령어를 통해 쉽게 디코딩할 수 있습니다.

 

# base64 --decode data.txt

 

 

 

'Linux > bandit' 카테고리의 다른 글

Level 12 -> Level 13  (0) 2024.01.02
Level 11 -> Level 12  (0) 2024.01.02
Level 9 -> Level 10  (0) 2024.01.01
Level 8 -> Level 9  (0) 2024.01.01
Level 7 -> Level 8  (0) 2023.12.28