Writeup — CTF “Bukan Kortek” (IDSECCONF 2025)


Ringkasan singkat
Gambaran singkat: challenge ini mengombinasikan red herrings (steganografi palsu) dengan gating jaringan (memeriksa X-Forwarded-For / ASN). Inti solusinya: temukan clue di metadata gambar → gunakan X-Forwarded-For untuk mengakses konten tersembunyi → sambung ke layanan TCP yang berisi quiz pajak → otomatisasi jawaban untuk mengejar flag.
Babak Kualifikasi
Tulisan ini ngebahas challenge Bukan Kortek yang muncul di babak kualifikasi CTF IDSECCONF 2025. Event ini jadi seleksi awal sebelum masuk ke final di Makassar. Challenge-nya unik karena nyampur logika jaringan, stego, dan sedikit reverse thinking — khas gaya penyisihan yang nge-test refleks dan pemahaman dasar security.
1) Temuan awal
Buka https://reg.hackincelebes.org/. Halaman hanya berisi teks:
Pastikan Kamu berada di jaringan yang benar!
Ada background image purbyte.jpg. Karena petunjuk soal jaringan jelas, saya simpan gambar untuk dianalisa.
2) Analisa gambar & jebakan stego
File purbyte.jpg berukuran sekitar 134 KB. Langkah pemeriksaan yang saya lakukan:
strings,binwalk -e,steghide extract→ tidak menemukan flag langsung.- Ekstraksi LSB / pemeriksaan fragment MZ/GZIP via script → menemukan beberapa fragmen binari (MZ/gzip), tapi bukan flag.
- Cek metadata XMP → menemukan teks yang relevan:
Ciye mau saingan ama roy sukro yak? wkwkwkw Kamu tahu saya kerja dimana? Tahu AS Number?Artinya: gambar memberi petunjuk (ASN), bukan payload stego. Fragmen MZ/GZIP di file kemungkinan red herring.
3) Cek header & CDN
Menjalankan:
curl -I https://reg.hackincelebes.org/mengembalikan header Cloudflare (AS13335). Karena CDN, A-record ini belum tentu ASN origin.
XMP mengindikasikan kita harus berpikir soal ASN.
4) Uji X-Forwarded-For dan menemukan AS45732
Saya bereksperimen dengan header spoof untuk melihat apakah server memfilter konten berdasarkan asal request.
- Saat mengirim
X-Forwarded-For: 127.0.0.1, server merespon berbeda — petunjuk mengarah ke ASN AS45732. Ini menandakan server menyediakan konten berbeda bila header XFF menunjukkan IP dari ASN tertentu.
- Dari AS45732 (Pusintek/Kemenkeu) saya ambil candidate IP publik. Contoh yang dipakai:
103.12.81.254.
5) Spoof XFF ke IP di range AS45732 → dapat akses
Spoof XFF ke IP yang berada di AS45732:
curl -H "X-Forwarded-For: 103.12.81.254" https://reg.hackincelebes.org/Halaman berubah menjadi:
Kamu dijaringan yang benar! flag disini: nc korteks.hackincelebes.org 5001
Artinya: setelah XFF diarahkan ke IP tertentu di ASN yang dimaksud, server membuka tahapan berikutnya.
6) Koneksi ke layanan TCP (netcat)
Ikuti petunjuk: buka TCP ke korteks.hackincelebes.org:5001:
nc korteks.hackincelebes.org 5001Server menampilkan quiz interaktif soal pajak. Karakteristik:
- Soal random (materai, PPh, PPnBM, pajak karbon, dsb.).
- Waktu per soal sangat singkat: 3 detik.
- Salah menjawab → koneksi ditutup.
Manual Sulit → butuh otomatisasi.
7) Membangun auto-solver (desain singkat)
Fungsi utama solver:
- Buka socket TCP ke host:port.
- Baca stream sampai muncul prompt (toleran terhadap variasi ejaan "Jawaban")
- Parse teks soal (cari pola:
Rp...,xx%, jumlah dokumen, pembagian /12, dsb.) - Hitung jawaban sesuai hint.
- Kirim jawaban sebagai angka (tanpa tanda baca), tunggu respon.
- Tangani dua soal per koneksi (server sering kirim Q1 lalu Q2 sebelum menutup).
- Loop reconnect sampai flag didapat.
Parsing handled cases:
Pajak = Rp10.000 × Jumlah Dokumen→ ambil jumlah dokumen × tarif.Tarif 5% × PKP→ ambil PKP (angka terbesar) × 5%.Total PPh ÷ 12(angsuran PPh 25) → ambil angka terbesar ÷ 12.Pajak karbon: Rp30/kg × jumlah kg→ parse tarif dan jumlah.
Optimasi:
- socket timeout < 3s supaya tidak keburu hang.
- toleransi prompt (kadang server prank ejaan).
- jalankan solver dari VPS dekat (SG/ID) demi latency rendah.
8) Menangkap flag
Setelah solver stabil dan XFF di-spoof ke IP di ASN yang benar, jawaban otomatis berhasil melewati quiz berulang-ulang sampai server mengeluarkan flag (format flag{...}).
flag{_w3lc0me_t0_kota_daeng_pur_}9) Catatan teknik & etika
- Teknik XFF spoofing dipakai karena challenge memang mensyaratkan gating berbasis header—jangan pakai pada target nyata tanpa izin.
- Fragmen MZ/GZIP di gambar adalah jebakan; penting memfilter mana yang benar-benar payload dan mana red herring.
- Karena batas waktu ketat, jalankan solver di VPS yang latensinya rendah.
10) Reproduksi singkat (urutan langkah)
- Download gambar:
curl -O https://reg.hackincelebes.org/purbyte.jpg - Periksa XMP:
exiftool purbyte.jpg→ temukan clue ASN. - Tes header spoof:
curl -H "X-Forwarded-For: 127.0.0.1" https://reg.hackincelebes.org/→ akan muncul petunjuk AS45732. - Pilih IP di AS45732, spoof XFF ke IP itu:
curl -H "X-Forwarded-For: 103.12.81.254" https://reg.hackincelebes.org/→ akan tampilnc korteks.hackincelebes.org 5001. - Connect:
nc korteks.hackincelebes.org 5001dan jalankan solver otomatis.
Penutup
Write-up ini merupakan catatan teknis pembelajaran mengenai challenge CTF (Capture The Flag), sekaligus sebuah kisah kecil tentang semangat, proses belajar, dan dedikasi yang lahir dari perasaan yang tulus.
Komentar