2026-08-21 13:51:31 +07:00
|
|
|
---
|
|
|
|
|
title: "Sixty Four — Double Base64"
|
2026-08-21 14:28:04 +07:00
|
|
|
type: "writeup"
|
|
|
|
|
section: "writeups"
|
|
|
|
|
status: "published"
|
|
|
|
|
author: "asep"
|
|
|
|
|
tags: ["gemastik", "ctf", "warmup", "crypto"]
|
|
|
|
|
path: "writeups/gemastik-2026-warmup/ch1-sixty-four.md"
|
|
|
|
|
created_at: "2026-08-21T07:25:17.079Z"
|
|
|
|
|
updated_at: "2026-08-21T07:25:17.079Z"
|
2026-08-21 13:51:31 +07:00
|
|
|
event: "GEMASTIK 2026 Warmup"
|
2026-08-21 14:28:04 +07:00
|
|
|
challenge: "Sixty Four — Double Base64"
|
2026-08-21 13:51:31 +07:00
|
|
|
category: "crypto"
|
|
|
|
|
points: 500
|
|
|
|
|
difficulty: "easy"
|
|
|
|
|
flag: "GEMASTIK19{b4s3_s1xty_f0ur_warm1ng_up}"
|
|
|
|
|
---
|
|
|
|
|
# Sixty Four (500 pts) — Encoding
|
|
|
|
|
|
|
|
|
|
**File:** `chall.txt` → `UjBWTlFWTlVTVXN4T1h0aU5ITXpYM014ZUhSNVgyWXdkWEpmZDJGeWJURnVaMTkxY0gwPQ==`
|
|
|
|
|
|
|
|
|
|
Teks di-encode **Base64 dua kali** (hint: "sixty four" = base64). Decode berlapis:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ echo "UjBWTlFWTlVTVXN4T1h0aU5ITXpYM014ZUhSNVgyWXdkWEpmZDJGeWJURnVaMTkxY0gwPQ==" | base64 -d
|
|
|
|
|
R0VNQVNUSUsxOXtiNHMzX3MxeHR5X2YwdXJfd2FybTFuZ191cH0=
|
|
|
|
|
$ echo "R0VNQVNUSUsxOXtiNHMzX3MxeHR5X2YwdXJfd2FybTFuZ191cH0=" | base64 -d
|
|
|
|
|
GEMASTIK19{b4s3_s1xty_f0ur_warm1ng_up}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Solusi Python
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
import base64
|
|
|
|
|
|
|
|
|
|
with open("chall.txt") as f:
|
|
|
|
|
s = f.read().strip()
|
|
|
|
|
|
|
|
|
|
# First base64 decode
|
|
|
|
|
decoded1 = base64.b64decode(s)
|
|
|
|
|
# Second base64 decode
|
|
|
|
|
flag = base64.b64decode(decoded1).decode()
|
|
|
|
|
|
|
|
|
|
print(f"Flag: {flag}")
|
|
|
|
|
# Output: GEMASTIK19{b4s3_s1xty_f0ur_warm1ng_up}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Flag
|
|
|
|
|
|
2026-08-21 14:28:04 +07:00
|
|
|
`GEMASTIK19{b4s3_s1xty_f0ur_warm1ng_up}`
|