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 -dKullanı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 2220Açı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 30000Kullanı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:
- Şifreyi ekrana yazar.
|ile bunu netcat'e girdi olarak gönderir.- Netcat bu veriyi 30000 portundaki dinleyen servise iletir.
- 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 -rile tersine çevrilir. - Magic Bytes: Dosyaların içeriğindeki imzalar.
filekomutu 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ı.