Level 10 → 11

data.txt dosyası Base64 ile encode edilmiş şifreyi içeriyor.

Çözüm

ssh bandit10@bandit.labs.overthewire.org -p 2220
cat data.txt | base64 -d

Kullanılan Komutlar

catDosya içeriğini okur

|Bir komutun çıktısını başka komuta girdi olarak iletir

base64 -dBase64 encode edilmiş veriyi decode eder

Açıklama

Dosyayı açtığımızda içerik anlaşılmaz görünüyor. Sonunda = karakteri olduğunu fark ettiğimizde Base64 encoding olduğunu anlıyoruz. Base64'ün padding karakteri ='dir. base64 -d ile decode ettiğimizde:

The password is <bandit11sifre>

çıktısını alıyoruz.

Level 11 → 12

Senaryo

data.txt dosyasındaki şifre ROT13 ile şifrelenmiş.

Çözüm

ssh bandit11@bandit.labs.overthewire.org -p 2220
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'

Kullanılan Komutlar

trKarakter dönüşümü yapan araç

'A-Za-z' 'N-ZA-Mn-za-m'ROT13 dönüşüm tablosu (her harf 13 pozisyon kaydırılır)

Açıklama

ROT13, alfabenin her harfini 13 pozisyon ileriye kaydıran basit bir şifreleme yöntemidir. Tersine çevirmek için aynı işlemi tekrarlamak yeterlidir (ROT13 kendi tersidir). tr komutu ile büyük ve küçük harflerin her birini kaydırarak veriyi decode ediyoruz.

Not: ROT13'ü online araçlarla da (rot13.com gibi) çözebilirsiniz.

Level 12 → 13

Senaryo

data.txt aslında bir hex dump yani binary bir dosyanın onaltılık sayı sistemi (hexadecimal) gösterimi. Üstelik bu dosya birden fazla kez sıkıştırılmış: gzip, bzip2 ve tar katmanları var.

Çözüm

ssh bandit12@bandit.labs.overthewire.org -p 2220
#Çalışmak için geçici bir dizin oluşturduk. Dosyaların karışmaması için
mkdir /tmp/banditcalismasi
cp data.txt /tmp/banditcalismasi/
cd /tmp/banditcalismasi
# Hex dump'ı binary'e çevir
xxd -r data.txt > cikti
file cikti          # Dosya tipini öğren
#Gzip katmanı
mv cikti cikti.gz
gzip -d cikti.gz
file cikti          
#Bzip2 katmanı
mv cikti cikti.bz2
bzip2 -d cikti.bz2
file cikti
#Tar katmanı
mv cikti cikti.tar
tar xf cikti.tar
file data5.bin      
# Burası bu şekilde döngü halinde devam ediyor. Arşivleri çıkarıp dosya içeriğini kontrol ede ede devam eder ta ki ASCII text görene kadar
cat <son_dosya>

Kullanılan Komutlar

xxd -rHex dump'ı tersine çevirerek binary'e dönüştürür

fileDosyanın gerçek tipini gösterir (uzantıya değil, içeriğe bakar)

mvDosyayı taşır veya yeniden adlandırır ama burada uzantı değiştirmek için kullanıldı

gzip -dGzip sıkıştırmasını açar

bzip2 -dBzip2 sıkıştırmasını açar

tar xfTar arşivini çıkarır

Açıklama

file komutu dosyanın uzantısına değil, içeriğindeki magic bytes'a bakarak gerçek formatı söyler. Bu yüzden uzantıyı manuel olarak verip doğru aracı kullanmak gerekiyor. Döngü, file komutu ASCII text sonucunu döndürdüğünde sona erer. O dosyada ise şifre yazar.

Level 13 → 14

Senaryo

Bandit14'ün şifresi /etc/bandit_pass/bandit14 dosyasındadır. Ancak bu dosya yalnızca bandit14 kullanıcısı tarafından okunabilir. Bunun yerine bize bir SSH private key verilmiş.

Çözüm

Bandit13 içerisindeki bize verilen ssh anahtarını kopyalayıp yetkilerini değiştireceğim.

nano sshkey.private 
chmod 600 sshkey.private
ssh -i sshkey.private bandit14@bandit.labs.overthewire.org -p 2220

Açıklama

SSH, parola yerine asimetrik kriptografi ile kimlik doğrulaması yapabilir:

  • Public Key (Açık Anahtar): Sunucuda saklanır, herkese verilebilir.
  • Private Key (Özel Anahtar): Sadece sizde bulunur, kimseyle paylaşılmaz.

Sunucu bir veri üretir → istemci bunu private key ile imzalar → sunucu public key ile imzayı doğrular.

chmod 600 neden gerekli? SSH servisi, private key dosyasının izinleri çok açıksa (başkaları da okuyabiliyorsa) güvenlik gerekçesiyle bağlantıyı reddeder. 600 = yalnızca sahibi okuyabilir/yazabilir.

Level 14 → 15

Senaryo

Bu seviye bize diyor ki, bir sonraki seviyenin şifresi şu şekilde elde edilir: mevcut seviyenin şifresini (bandit14) localhost'taki 30000 numaralı porta gönder.

Çözüm

ssh bandit14@bandit.labs.overthewire.org -p 2220
# Önce bandit14 şifresini oku
cat /etc/bandit_pass/bandit14
# Şifreyi 30000 portuna gönder
echo "<bandit14_sifresi>" | nc localhost 30000

Kullanılan Komutlar

nc (netcat)TCP/UDP bağlantısı kurmak için kullanılan ağ aracı

localhostKendi makinene bağlan (127.0.0.1)

30000Hedef port numarası

Açıklama

Netcat (nc), the Swiss army knife of network tools adı ile bilinen bir ağ aracıdır. Burada kullanımı basit: bir porta bağlan, veri gönder, cevabı al.

echo "<bandit14sifre>" | nc localhost 30000 komutu:

  1. Şifreyi ekrana yazar.
  2. | ile bunu netcat'e girdi olarak gönderir.
  3. Netcat bu veriyi 30000 portundaki dinleyen servise iletir.
  4. Servis şifreyi doğrular ve karşılığında bir sonraki level'ın şifresini döndürür.

Özet

10 → 11Base64 Decodebase64 -d

11 → 12ROT13tr

12 → 13Hex Dump + Çoklu Sıkıştırmaxxd, file, gzip, bzip2, tar

13 → 14SSH Private Key ile Girişssh -i, chmod

14 → 15Port'a Veri Göndermenc (netcat)

Öğrenilen Kavramlar

  • Base64: Binary veriyi metin olarak taşımak için kullanılan encoding. = padding karakteri ile tanınır.
  • ROT13: 13 pozisyon kaydırma ile çalışan basit şifreleme. Kendi tersidir.
  • Hex Dump: Binary veriyi hexadecimal olarak gösterme yöntemi. xxd -r ile tersine çevrilir.
  • Magic Bytes: Dosyaların içeriğindeki imzalar. file komutu uzantıya değil bunlara bakar.
  • SSH Asimetrik Kriptografi: Public/private key çifti ile güvenli kimlik doğrulama.
  • Netcat: TCP/UDP üzerinden ham veri gönderip alabilen çok yönlü ağ aracı.