Setelah berhasil menaklukkan 10 level pertama OverTheWire Bandit, perjalananmu di dunia Capture The Flag (CTF) belum selesai. Level 11 sampai 20 membawa tantangan yang lebih kompleks — kamu akan berurusan dengan enkripsi sederhana, manipulasi file biner, koneksi SSH yang tricky, sampai port scanning dan komunikasi SSL.
Kalau di artikel sebelumnya kita sudah bahas Bandit Levels 1-10 (dasar-dasar command line Linux), sekarang saatnya naik level. Tantangan di level 11-20 ini sering muncul di technical interview untuk posisi junior security — jadi pastikan kamu benar-benar paham, bukan sekadar copy-paste solusi.
Menurut Rudi Hartono, Security Engineer yang rutin menggunakan OverTheWire sebagai materi pelatihan internal di perusahaannya, “Bandit levels 11-20 adalah sweet spot untuk belajar dasar-dasar problem solving di dunia nyata. Saya selalu mewajibkan tim junior menyelesaikan ini dalam minggu pertama onboarding karena melatih mindset investigasi yang esensial.” Rudi menambahkan bahwa dari 15 orang yang ia latih tahun lalu, 12 di antaranya mengatakan level 12 dan 16 adalah yang paling menguras otak sekaligus paling berkesan.
Apa Itu OverTheWire Bandit?
OverTheWire adalah platform wargame/CTF gratis yang sudah ada sejak 2011 dan tetap menjadi salah satu sumber belajar cybersecurity paling direkomendasikan hingga 2026. Seri Bandit fokus pada fundamental Linux dan keamanan dasar — kamu akan belajar command-line, manipulasi file, networking, dan scripting melalui tantangan yang progresif.
Untuk mengakses setiap level, kamu perlu SSH ke server OverTheWire menggunakan kredensial dari level sebelumnya. Formatnya selalu:
ssh bandit[LEVEL]@bandit.labs.overthewire.org -p 2220
Prasyarat sebelum lanjut: Pastikan kamu sudah menyelesaikan Bandit Levels 0-10 dan memahami perintah dasar Linux seperti ls, cat, grep, find, sort, uniq, strings, dan base64. Kalau belum, sebaiknya selesaikan dulu level 1-10 sebelum membaca walkthrough ini.
Level 11 → 12: Dekripsi Rot13
Tantangan: File data.txt berisi password level berikutnya, tapi semua karakternya sudah dirotasi 13 posisi (ROT13 cipher).
Konsep: ROT13 adalah cipher substitusi sederhana yang menggeser setiap huruf alfabet sebanyak 13 posisi. Karena alfabet punya 26 huruf, ROT13 bersifat self-inverse — artinya melakukan ROT13 dua kali akan mengembalikan teks aslinya.
Solusi:
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Perintah tr (translate) memetakan setiap huruf ke huruf 13 posisi setelahnya. Password akan muncul langsung di terminal.
Level 12 → 13: Rantai Kompresi Berlapis
Tantangan: File data.txt adalah hexdump dari file biner yang sudah dikompresi berulang kali. Kamu harus membalikkan prosesnya — dari hexdump kembali ke teks asli.
Konsep: Ini adalah tantangan reverse engineering sederhana. File asli dikompresi dengan berbagai format (gzip, bzip2, tar) secara berlapis, lalu hasil akhirnya diubah menjadi hexdump.
Solusi — langkah demi langkah:
Step 1: Ubah hexdump kembali ke file biner:
mkdir /tmp/bandit12
cp data.txt /tmp/bandit12/
cd /tmp/bandit12
xxd -r data.txt > data.bin
Step 2: Cek tipe file:
file data.bin
# Output: data.bin: gzip compressed data
Step 3: Ekstrak berulang kali. Karena file dikompresi berlapis, kamu harus terus mengecek tipe file dan mengekstraknya sampai dapat teks biasa:
# Iterasi 1: gzip
mv data.bin data.gz && gzip -d data.gz
# Iterasi 2: bzip2
mv data data.bz2 && bzip2 -d data.bz2
# Iterasi 3: gzip lagi
mv data data.gz && gzip -d data.gz
# Iterasi 4: tar
mv data data.tar && tar -xf data.tar
# Iterasi 5: tar lagi
mv data5.bin data.tar && tar -xf data.tar
# Iterasi 6: bzip2
mv data6.bin data.bz2 && bzip2 -d data.bz2
# Iterasi 7: tar
mv data data.tar && tar -xf data.tar
# Iterasi 8: gzip
mv data8.bin data.gz && gzip -d data.gz
# Hasil akhir: file ASCII dengan password!
Tips: Selalu jalankan file setelah setiap ekstraksi untuk tahu format selanjutnya. Jangan lupa rename file sesuai ekstensi yang dibutuhkan (.gz, .bz2, .tar).
Level 13 → 14: Login dengan SSH Private Key
Tantangan: Tidak ada password — hanya ada file sshkey.private yang bisa digunakan untuk login ke level berikutnya sebagai user bandit14 di localhost.
Konsep: SSH mendukung autentikasi menggunakan private key, bukan password. Ini umum digunakan di production environment.
Solusi:
ssh -i sshkey.private bandit14@localhost -p 2220
Begitu login sebagai bandit14, langsung baca password untuk level 15:
cat /etc/bandit_pass/bandit14
Level 14 → 15: Kirim Password via Port Lokal
Tantangan: Password level 15 hanya bisa didapat dengan mengirimkan password level 14 (yang barusan kamu dapat) ke port 30000 di localhost.
Konsep: Netcat (nc) adalah “pisau Swiss Army” networking — bisa mengirim dan menerima data via TCP/UDP.
Solusi:
nc localhost 30000
# Ketik password level 14, lalu tekan Enter
# Server akan membalas dengan password level 15
Alternatif satu baris:
echo "[password_level_14]" | nc localhost 30000
Level 15 → 16: Komunikasi SSL/TLS
Tantangan: Sama seperti level sebelumnya (kirim password ke port localhost), tapi kali ini port 30001 menggunakan enkripsi SSL. Netcat biasa tidak akan berfungsi.
Konsep: SSL/TLS mengenkripsi lalu lintas data. Kamu membutuhkan klien yang mendukung SSL — dalam hal ini openssl s_client.
Solusi:
openssl s_client -connect localhost:30001 -quiet
# Ketik password level 15, lalu Enter
# Password level 16 akan muncul
Flag -quiet menyembunyikan output sertifikat SSL yang panjang, jadi kamu hanya melihat data yang dikirim/diterima.
Level 16 → 17: Port Scanning + SSL
Tantangan: Ini level yang paling kompleks di rentang 11-20. Password level 17 tersembunyi di salah satu port antara 31000-32000 di localhost. Port tersebut harus merespons dengan benar ketika kamu mengirimkan password level 16 — dan mendukung SSL.
Konsep: Port scanning (nmap) + identifikasi service + koneksi SSL.
Solusi:
Step 1: Scan port 31000-32000 untuk menemukan service yang aktif:
nmap -p 31000-32000 localhost
Output akan menunjukkan beberapa port terbuka. Catat semuanya.
Step 2: Coba koneksi SSL ke setiap port yang ditemukan:
openssl s_client -connect localhost:31790 -quiet
# Ketik password level 16
# Jika port benar, kamu akan dapat SSH private key (bukan password biasa!)
Step 3: Setelah dapat private key, simpan dan gunakan untuk login ke level 17. PENTING: Pastikan permission key di-set ke 600 (hanya pemilik yang bisa baca):
# Simpan key di /tmp/
nano /tmp/bandit17_key
# Paste private key yang didapat
# Simpan dan keluar
chmod 600 /tmp/bandit17_key
ssh -i /tmp/bandit17_key bandit17@localhost -p 2220
Level 17 → 18: Membandingkan Dua File
Tantangan: Ada dua file — passwords.old dan passwords.new. Password level 18 adalah satu-satunya baris yang berubah di antara keduanya.
Konsep: Perintah diff membandingkan dua file baris per baris dan menampilkan perbedaannya.
Solusi:
diff passwords.old passwords.new
# Output:
# 42c42
# < [password_lama]
# ---
# > [password_baru] ← ini password untuk bandit18
Baris dengan tanda > adalah baris baru — itulah password level 18.
Level 18 → 19: .bashrc yang Memutus Koneksi
Tantangan: Setiap kali kamu login sebagai bandit18, file .bashrc langsung mengeksekusi perintah exit alias logout. Kamu tidak bisa login secara normal.
Konsep: SSH bisa menjalankan perintah langsung tanpa membuka shell interaktif. Ini mem-bypass .bashrc yang bermasalah.
Solusi:
ssh [email protected] -p 2220 "cat readme"
# Atau alternatif:
ssh [email protected] -p 2220 /bin/bash --norc
Opsi kedua membuka shell tanpa membaca .bashrc (flag --norc), jadi kamu bisa berinteraksi normal. Password level 19 ada di file readme.
Level 19 → 20: Setuid Binary
Tantangan: Ada binary bernama bandit20-do di home directory. Binary ini memiliki permission setuid — artinya berjalan dengan hak akses pemiliknya (bandit20), meskipun kamu login sebagai bandit19.
Konsep: Setuid (SUID) adalah permission khusus di Linux yang membuat file executable berjalan dengan hak akses pemilik file, bukan pengguna yang menjalankannya. Ini powerful dan sering jadi target privilege escalation.
Solusi: Gunakan binary untuk membaca password bandit20:
./bandit20-do cat /etc/bandit_pass/bandit20
Binary bandit20-do menjalankan perintah apapun dengan hak akses bandit20 — termasuk membaca file password yang hanya bisa dibaca oleh bandit20.
Level 20 → 21: Setuid + Netcat (Bonus)
Tantangan: Ada binary setuid suconnect yang terkoneksi ke port yang kamu tentukan. Binary ini akan membaca satu baris dari koneksi TCP dan membandingkannya dengan password level sebelumnya. Jika cocok, password level 21 akan dikirim balik.
Konsep: Kamu harus membuka port sendiri menggunakan netcat, lalu menjalankan suconnect untuk konek ke port tersebut.
Solusi (butuh dua terminal):
Terminal 1 — jalankan listener:
echo "[password_bandit20]" | nc -l -p 4444
Terminal 2 — jalankan suconnect:
./suconnect 4444
Password level 21 akan muncul di terminal 2 setelah binary memverifikasi password yang kamu kirim dari terminal 1.
Atau dalam satu terminal menggunakan background process:
echo "[password_bandit20]" | nc -l -p 4444 &
./suconnect 4444
Tabel Ringkasan: Konsep Kunci per Level
| Level | Konsep | Command/Tool Kunci |
|---|---|---|
| 11→12 | Cipher ROT13 | tr |
| 12→13 | Reverse hexdump + rantai kompresi | xxd, gzip, bzip2, tar, file |
| 13→14 | SSH private key auth | ssh -i |
| 14→15 | Netcat TCP communication | nc |
| 15→16 | SSL/TLS connection | openssl s_client |
| 16→17 | Port scanning + SSL service | nmap, openssl s_client |
| 17→18 | File comparison | diff |
| 18→19 | SSH command execution, bypass .bashrc | ssh ... "command" |
| 19→20 | SUID binary exploitation | ./setuid_binary |
| 20→21 | Netcat listener + setuid networking | nc -l, suconnect |
Pertanyaan yang Sering Diajukan (FAQ)
Kenapa saya harus repot-repot main CTF?
CTF melatih problem solving mindset — skill paling dicari di dunia cybersecurity. Banyak konsep di Bandit (port scanning, SSL, file manipulation) yang langsung aplikatif di pekerjaan nyata.
Level 12 kok susah banget?
Level 12 memang dirancang sebagai “filter” — memisahkan yang benar-benar mau belajar dari yang cuma coba-coba. Pro tip: selalu jalankan file setelah setiap ekstraksi, dan bikin folder kerja di /tmp/ biar bersih.
Port mana yang benar di level 16?
Gunakan nmap -sV -p 31000-32000 localhost untuk melihat tidak hanya port yang terbuka, tapi juga service apa yang berjalan. Cari yang mendukung SSL. Port yang benar biasanya di range atas dan akan membalas dengan private key, bukan password biasa.
Apakah cheat di CTF itu wajar?
Walkthrough seperti ini adalah alat belajar, bukan contekan. Goal-nya bukan sekadar dapat password — tapi paham kenapa solusinya seperti itu. Baca walkthrough, pahami, lalu coba sendiri tanpa lihat. Kalau bisa menjelaskan setiap langkah ke orang lain, kamu sudah paham.
Kesimpulan
Level 11-20 OverTheWire Bandit memperkenalkan konsep-konsep yang jauh lebih realistis dibanding 10 level pertama. Kamu sudah belajar dekripsi sederhana, reverse engineering file terkompresi, autentikasi SSH key, komunikasi SSL, port scanning, perbandingan file, bypass .bashrc, dan privilege escalation dasar via SUID.
Skill-skill ini adalah fondasi untuk tantangan yang lebih besar — baik di CTF lanjutan seperti Natas (web security), Leviathan, atau Krypton (kriptografi), maupun di dunia profesional sebagai security engineer atau pentester.
Kalau kamu serius ingin menguasai skill ini dengan bimbingan terstruktur, ShinoBee punya program belajar cybersecurity dari nol sampai mahir dengan sistem daily accountability yang bikin kamu konsisten. Karena di dunia cybersecurity, konsistensi belajar setiap hari adalah pembeda antara yang berhasil dan yang menyerah di tengah jalan.