- Deleted all 14 dummy docs from DB + filesystem - Created 14 Gemastik warmup writeups + index via create_document API (DB-first) - ch1-ch12: encoding/stego/web/pwn basics - ch13: RSA small factors - ch14: RSA special integers via paper-search (GCD with paper appendix primes) - All 15 docs indexed and live at wiki.asepharyana.my.id
1.0 KiB
1.0 KiB
title, type, section, status, author, tags, path, created_at, updated_at, event, challenge, category, points, difficulty, flag
| title | type | section | status | author | tags | path | created_at | updated_at | event | challenge | category | points | difficulty | flag | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Layers — Hex to Base64 Chain | writeup | writeups | published | asep |
|
writeups/gemastik-2026-warmup/ch12-layers.md | 2026-08-21T07:25:48.559Z | 2026-08-21T07:25:48.559Z | GEMASTIK 2026 Warmup | Layers — Hex to Base64 Chain | crypto | 500 | easy | GEMASTIK19{h3x_lQlu_b4s3_ch41n} |
Layers (500 pts) — Encoding chain
File: chall.txt → 5230564e51564e55535573784f58746f4d33686662464673645639694e484d7a58324e6f4e44467566513d3d
Dua lapis encoding berturut-turut: Hex → bytes → Base64 → flag:
import base64
s = "5230564e51564e55535573784f58746f4d33686662464673645639694e484d7a58324e6f4e44467566513d3d"
# Layer 1: hex decode
b = bytes.fromhex(s)
# b = b'R0VNQVNUSUsxOXtoM3hfbFFsdV9iNHMzX2NoNDFufQ=='
# Layer 2: base64 decode
flag = base64.b64decode(b).decode()
print(flag)
# GEMASTIK19{h3x_lQlu_b4s3_ch41n}
Flag
GEMASTIK19{h3x_lQlu_b4s3_ch41n}