← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 22 → Seviye 23

Teknik Not

Bağlam

Bir önceki seviyedeki gibi yine bir Cron görevi var. Ancak bu sefer şifreyi sabit bir dosya ismine yazmıyor. Dosya ismini belirli bir kurala (algoritmaya) göre oluşturuyor.

Görevi çözmek için scriptin ne yaptığını anlamamız, yani tersine mühendislik (reverse engineering) yapmamız gerekiyor.

Hedef

bandit23 kullanıcısı adına çalışan cron görevinin oluşturduğu şifre dosyasının adını bulmak.

Çözüm

Adım 1: Cron Dosyasını Bul

Yine /etc/cron.d/ altına bakalım:

ls -la /etc/cron.d/
cat /etc/cron.d/cronjob_bandit23

Bize /usr/bin/cronjob_bandit23.sh scriptini işaret edecek.

Adım 2: Scripti Analiz Et

Kodu okuyalım:

cat /usr/bin/cronjob_bandit23.sh

Kodun Önemli Kısmı:

myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)

echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"
...

Analiz:

  1. myname=$(whoami): Scripti çalıştıran kullanıcının adını alıyor.
  2. mytarget=...: “I am user [kullanıcı_adı]” cümlesinin MD5 özetini (hash) alarak bir dosya ismi oluşturuyor.

Buradaki Tuzak: Eğer bu scripti siz çalıştırırsanız, whoami komutu bandit22 döner ve script sizin kendi şifrenizi (zaten bildiğiniz şeyi) kopyalar.

Bizim merak ettiğimiz: Bu script Cron tarafından, bandit23 kullanıcısı olarak çalıştırıldığında dosya adı ne oluyor?

Adım 3: Manuel Hesaplama

Scriptin mantığını taklit edelim ama değişken yerine hedef kullanıcının adını yazalım:

echo I am user bandit23 | md5sum | cut -d ' ' -f 1

Çıktı:

8ca3194675ce867e66f2758de6966bd9

İşte scriptin oluşturduğu dosya ismi bu!

Adım 4: Şifreyi Oku

Dosya ismini bulduğumuza göre, /tmp/ altındaki o dosyayı okuyalım:

cat /tmp/8ca3194675ce867e66f2758de6966bd9

Tebrikler, bir sonraki seviyenin şifresi elinizde!

Öğrendiklerimiz

  1. Kod Analizi: Bir yazılımı çalıştırmadan, sadece kodunu okuyarak ne yapacağını tahmin etmek.
  2. Bağlam (Context): whoami gibi değişkenlerin, kodu çalıştıran kişiye göre değiştiğini anlamak kritikti. Scripti biz değil, sistem çalıştırıyor.