문제: DreamHack — Base64 10 Times 분류: Crypto 난이도: 🥉 브론즈 4 FLAG:
DH{so_ez_base64}
문제 설명은 딱 한 줄과 긴 문자열이다.
Base64 10x Decoding = ?
Vm0wd2QyUXlWa1pPVldoVFYwZFNUMVpzWkZOWFZsbDNXa1JTVjFac2JETlha…
말 그대로 base64로 여러 겹 인코딩된 문자열을 반복해서 디코드하라는 문제다. 함께 주어진 Hello.txt는 "No Source Code!"라고 적힌 미끼다. 진짜 데이터는 저 문자열 하나뿐이다.

문제 개요
| 항목 | 내용 |
|---|---|
| 문제명 | Base64 10 Times |
| 난이도 | 🥉 브론즈 4 |
| 분류 | Crypto (인코딩) |
| 제공 | Hello.txt(미끼) + 문제 설명의 base64 문자열 |
| 목표 | 반복 base64 디코딩으로 플래그 복원 |
| 핵심 기법 | 다중 base64 디코딩 |
암호가 아니라 인코딩이라, 키도 알고리즘 분석도 필요 없다. 그냥 껍질을 벗기듯 계속 디코드하면 된다.
배경 — base64는 암호가 아니라 인코딩
base64는 임의의 바이너리를 아스키 64글자(A-Z a-z 0-9 + /)로 표현하는 인코딩이다. 3바이트(24비트)를 6비트씩 끊어 4글자로 바꾸므로, 인코딩하면 길이가 약 4/3으로 늘고, 디코드하면 약 3/4로 줄어든다. 이 길이 변화가 나중에 "몇 겹인지" 가늠하는 단서가 된다.
중요한 건 base64에 키가 없다는 점이다. 규칙이 공개돼 있어 누구나 되돌릴 수 있다. 그러니 base64를 열 번, 백 번 겹쳐도 보안이 되지 않는다. 한 겹씩 벗기면 그만이다. 이 문제는 그 사실을 체험시키는 입문 문제다.
base64 문자열을 다시 base64로 인코딩하면 재미있는 패턴이 생긴다. 아스키 문자만 담긴 문자열을 base64하면 결과가 특정 접두사로 시작하는 경향이 있는데, 이 문제 문자열이 로 시작하는 게 그 흔적이다. 즉 "base64를 또 base64한" 티가 난다.




Comments
댓글
댓글을 남기려면 로그인이 필요해요. (네이버 · 구글 계정)
댓글 불러오는 중…