Nashwan.dev
Project DetailRead - Tech stack - Links
← Back to Cyber/CTF
Cyber/CTF2025/projects/Base-Conversion-is-Fun

Writeup: Base Conversion is Fun

Write-up bisa dibaca langsung di halaman ini atau diunduh sebagai file PDF.

Writeup: Base Conversion is Fun

Write-up CTF: Base Conversion is Fun

Informasi Challenge

Nama: Base Conversion is Fun
Kategori: Cryptography / Encoding
Tingkat Kesulitan: Easy

Deskripsi:

Diberikan sebuah string terenkripsi yang tampaknya menggunakan skema encoding tertentu. Tujuannya adalah untuk mengembalikan string tersebut ke format aslinya (flag).

String yang Diberikan:

VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==

Analisis String

Karakteristik String

String yang diberikan memiliki ciri-ciri khas Base64 Encoding:

  1. Kombinasi karakter: Menggunakan huruf besar (A-Z), huruf kecil (a-z), dan angka (0-9)
  2. Padding: Terdapat karakter padding berupa simbol sama dengan (==) di bagian akhir
  3. Panjang: Panjang string merupakan kelipatan 4 (standar Base64)

Apa itu Base64?

Base64 adalah skema encoding yang mengubah data binary menjadi format teks ASCII. Encoding ini sering digunakan untuk:

  • Mentransmisikan data binary melalui medium yang hanya mendukung teks
  • Menyimpan data dalam format yang aman untuk URL atau email
  • Mengobfuscate data sederhana (bukan enkripsi yang aman!)

Karakteristik Base64:

  • Menggunakan 64 karakter: A-Z, a-z, 0-9, +, /
  • Padding dengan karakter = jika diperlukan
  • Setiap 3 bytes input menghasilkan 4 karakter output

Solusi

Metode 1: Menggunakan Command Line Linux

Gunakan tool bawaan base64 untuk melakukan decode:

echo "VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==" | base64 -d

Output:

Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}

Metode 2: Menggunakan Python

import base64

encoded_string = "VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ=="
decoded_bytes = base64.b64decode(encoded_string)
flag = decoded_bytes.decode('utf-8')

print(flag)

Output:

Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}

Metode 3: Online Tool

Bisa juga menggunakan online Base64 decoder seperti:

Langkah:

  1. Buka salah satu website di atas
  2. Paste string encoded: VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==
  3. Klik "Decode" atau tool akan otomatis decode
  4. Dapatkan hasil: Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}

Penjelasan Detail

Proses Encoding (Bagaimana String Ini Dibuat)

Original Text: Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}
       ↓
   Base64 Encode
       ↓
Encoded: VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==

Proses Decoding (Yang Kita Lakukan)

Encoded: VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==
       ↓
   Base64 Decode
       ↓
Original: Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}

Mengapa Ada Padding (==)?

Padding (=) ditambahkan di akhir string Base64 untuk memastikan panjang output adalah kelipatan 4.

  • Jika data asli panjangnya tidak habis dibagi 3, Base64 akan menambahkan padding
  • = artinya 1 byte padding
  • == artinya 2 byte padding

Tips untuk Mengenali Base64

Ciri-ciri Visual

Ya, kemungkinan Base64 jika:

  • String hanya berisi A-Z, a-z, 0-9, +, /, dan =
  • Panjang string adalah kelipatan 4
  • Karakter = hanya muncul di akhir (maksimal 2 karakter)
  • Tidak ada spasi atau karakter khusus lainnya

Bukan Base64 jika:

  • Ada karakter selain yang disebutkan di atas
  • Ada spasi di tengah string
  • = muncul di tengah atau lebih dari 2 di akhir

Contoh String Base64

SGVsbG8gV29ybGQ=           → Hello World
VGhpcyBpcyBhIHRlc3Q=       → This is a test
Q1RGe2Jhc2U2NF9pc19mdW59   → CTF{base64_is_fun}

Variasi Base Encoding Lainnya

Base64 bukan satu-satunya encoding berbasis "base". Ada beberapa variasi:

Base32

  • Menggunakan 32 karakter: A-Z dan 2-7
  • Contoh: JBSWY3DPEBLW64TMMQ======

Base85 (ASCII85)

  • Menggunakan 85 karakter ASCII yang dapat dicetak
  • Lebih efisien daripada Base64 (20% lebih pendek)

Base58

  • Digunakan di Bitcoin addresses
  • Menghindari karakter yang mudah tertukar: 0, O, I, l

Hexadecimal (Base16)

  • Menggunakan 16 karakter: 0-9, A-F
  • Contoh: 48656c6c6f → Hello

Command Lengkap untuk Berbagai Tools

Linux/Mac Terminal

# Decode Base64
echo "VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==" | base64 -d

# Decode dan simpan ke file
echo "VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ==" | base64 -d > flag.txt

# Decode dari file
base64 -d encoded.txt

Python

import base64

# Method 1: Langsung dari string
encoded = "VmlhbnVfQ1RGezIyN2JjODViZDk0M2RkMDBkZmY3NDVmZTNjY2FkMzcxfQ=="
print(base64.b64decode(encoded).decode())

# Method 2: Dari file
with open('encoded.txt', 'r') as f:
    encoded = f.read()
    decoded = base64.b64decode(encoded).decode()
    print(decoded)

CyberChef Recipe

From Base64 (A-Za-z0-9+/=, true)

Pembelajaran

Apa yang Dipelajari

  1. Base64 Encoding/Decoding - Skill fundamental dalam CTF
  2. Pattern Recognition - Mengenali pola encoding dari karakteristik string
  3. Tool Usage - Menggunakan berbagai tools untuk decode

Best Practices untuk CTF

  • ✅ Selalu cek padding (=) di akhir string
  • ✅ Coba decode dengan berbagai encoding jika Base64 tidak berhasil
  • ✅ Gunakan CyberChef untuk chain multiple operations
  • ✅ Simpan hasil decode untuk analisis lebih lanjut

Common Mistakes

  • ❌ Lupa menghapus whitespace sebelum decode
  • ❌ Tidak memperhatikan case-sensitive (Base64 is case-sensitive!)
  • ❌ Mengira Base64 adalah enkripsi yang aman (ini hanya encoding!)

Flag

Vianu_CTF{227bc85bd943dd00dff745fe3ccad371}

Cheat Sheet: Base64 Quick Reference

Decode Base64

PlatformCommand
Linux/Macecho "STRING" | base64 -d
Windows PowerShell[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("STRING"))
Pythonimport base64; base64.b64decode("STRING").decode()
OnlineCyberChef, base64decode.org

Encode Base64

PlatformCommand
Linux/Macecho "STRING" | base64
Pythonimport base64; base64.b64encode("STRING".encode()).decode()

Selesai! 🎯

Challenge ini mengajarkan fundamental encoding yang sering muncul di CTF:

  • Base64 adalah encoding, bukan enkripsi
  • Mudah dikenali dari pattern karakternya
  • Tools sederhana sudah cukup untuk solve
  • Foundation untuk challenge crypto yang lebih kompleks
CTFCryptographyCLI
cover

Category

Cyber/CTF

Kamu bisa browse kategori ini untuk lihat yang sejenis.

More

Related in Cyber/CTF

Beberapa project lain di kategori yang sama.

See all →