Bandit Level 10 → 11

2025. 1. 5. 21:01·Wargame/bandit wargame

1. 문제

  • 패스워드는 data.txt 파일안에 잇는데 base64로 인코딩된 데이터를 포함하고 있다.

 


2. Base64 on Wikipedia

2.1 Base64란?

  • Base64는 이진 데이터를 텍스트로 인코딩하는 방법으로, 바이너리 데이터를 64개의 고유한 문자로 변환하여 텍스트 형식으로 안전하게 전송할 수 있도록 설계되었다.
    • 목적: 텍스트만 지원하는 시스템에서 바이너리 데이터를 안전하게 전송.
    • 주요 활용:
      • 이메일 첨부파일 전송 (SMTP 제한으로 7비트 ASCII만 지원).
      • HTML/CSS에서 이미지나 바이너리 데이터를 임베드.
      • URL이나 JSON 등 바이너리 데이터를 텍스트 환경에서 다룰 때.

 

2.2 Base64의 특징

  1. 64개의 고유 문자:
    • A-Z, a-z, 0-9: 62개
    • +와 /: 마지막 2개 문자
    • =: 패딩(Padding) 문자
  2. 인코딩 과정:
    • 6비트씩 나누어 총 64개의 값 중 하나로 매핑.
    • 원본 데이터의 크기가 3바이트의 배수가 아니면 = 패딩 추가.
  3. 효율성:
    • 데이터 크기 증가: 원본 바이너리 데이터보다 33~37% 더 커짐.

 

2.3 Base64 인코딩 과정

  1. 원본 데이터를 8비트(1바이트) 단위로 나눔.
  2. 6비트씩 묶어 새로운 그룹으로 나눔.
  3. 각 6비트 그룹을 Base64 문자 테이블에 매핑.
  4. 남은 데이터가 6비트에 못 미칠 경우, =로 패딩.
  • 예제 (ASCII 텍스트: "Man"):
    • 원본 데이터(ASCII):
      • M: 01001101
      • a: 01100001
      • n: 01101110
    • 24비트로 결합: 010011010110000101101110
    • 6비트씩 나눔: 010011, 010110, 000101, 101110
    • Base64 테이블 매핑:
      • 010011: T
      • 010110: W
      • 000101: F
      • 101110: u
    • 결과: TWFu

 

2.4 Base64 디코딩 과정

  1. Base64 문자열을 6비트씩 나눔.
  2. 각 6비트를 원본 8비트 데이터로 변환.
  3. 패딩(=)이 있다면, 필요한 바이트 수만 디코딩.
  • 예제 (Base64 문자열: TWFu):
    • Base64 문자: TWFu
      • T: 010011
      • W: 010110
      • F: 000101
      • u: 101110
    • 24비트로 결합: 010011010110000101101110
    • 8비트씩 나눔: 01001101, 01100001, 01101110
    • ASCII 변환:
      • 01001101: M
      • 01100001: a
      • 01101110: n
    • 결과: Man

 

2.5 패딩(Padding)의 역할

  1. Base64 문자열은 항상 4의 배수 길이를 유지.
  2. 원본 데이터가 3바이트로 나누어 떨어지지 않으면, = 문자로 패딩.
    • 1바이트 남음: == 추가.
    • 2바이트 남음: = 추가.

패딩 예시:

  • 입력: light work (10바이트)
    • Base64 결과: bGlnaHQgd29yaw== (16문자, 2개의 =)
  • 입력: light wor (9바이트)
    • Base64 결과: bGlnaHQgd29y (12문자, 패딩 없음)

 


3. 풀이

  • data.txt 파일을 보니 base64 인코딩 하고 패딩까지 된 것을 확인할 수 있다.
  • “ base64 -d data.txt “ 하면 디코딩 된다.

저작자표시 비영리 변경금지 (새창열림)

'Wargame > bandit wargame' 카테고리의 다른 글

12 → 13 까지 필요한 명령어  (0) 2025.01.06
Bandit Level 11 → 12  (0) 2025.01.05
Bandit Level 9 → 10  (0) 2025.01.05
Bandit Level 8 → 9  (0) 2025.01.05
Bandit Level 7 → 8  (1) 2025.01.05
'Wargame/bandit wargame' 카테고리의 다른 글
  • 12 → 13 까지 필요한 명령어
  • Bandit Level 11 → 12
  • Bandit Level 9 → 10
  • Bandit Level 8 → 9
스우스우03
스우스우03
보안 전문가가 되기 위한 노력들
  • 스우스우03
    스우스우
    스우스우03
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 환경 세팅 및 사용법 (12)
        • 가상환경 (3)
        • Visual Studio Code (3)
        • GitHub (6)
      • Language (17)
        • Python (7)
        • C (2)
        • 알고리즘 (8)
      • Hack&Dev (15)
        • 암호학 (3)
        • Web (11)
        • Pwnable (1)
      • Wargame (88)
        • bandit wargame (42)
        • natas wargame (11)
        • wargame 암호학 (7)
        • Webhacking.kr (26)
        • wargame forensic (1)
        • wargame misc (1)
      • knowledge (8)
        • 기타 지식 (8)
      • 기타... (1)
  • hELLO· Designed By정상우.v4.10.0
스우스우03
Bandit Level 10 → 11
상단으로

티스토리툴바