
- 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 |