← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 28 → Seviye 29

Teknik Not

Bağlam

Önceki seviyedeki yöntemle depoyu klonladık. Ancak README.md dosyasını açıp şifreyi aradığımızda garip bir durumla karşılaşıyoruz:

cat README.md
# Çıktı:
# (Boş veya anlamsız metin, ama şifre yok)

Talimatlar şifrenin orada olduğunu ama silindiğini ima ediyor. Bu durumda bakmamız gereken yer Git Geçmişi (History).

Çözüm

Adım 1: Repoyu Klonla

Eğer yapmadıysanız depoyu klonlayın. Unutmayın, eğer localhost engelliyse bunu kendi bilgisayarınızdan yapın:

git clone ssh://bandit28-git@bandit.labs.overthewire.org:2220/home/bandit28-git/repo

(Şifre: Level 27’den aldığınız şifre)

Adım 2: Logları Kontrol Et

Klasöre girin ve commit geçmişine bakın:

cd repo
git log

Burada yapılan değişikliklerin listesini göreceksiniz. Mesajlarda şüpheli bir şeyler arayın. Örneğin: “fix info leak” (bilgi sızıntısını düzelt), “remove password” (şifreyi sil) veya “add credentials” (kimlik bilgisi ekle).

Şuna benzer bir çıktı görebilirsiniz:

commit 4b3d...
Author: ...
Date: ...
    fix info leak

commit 9d2a...
Author: ...
Date: ...
    add credentials

Adım 3: Geçmişe Yolculuk

O şüpheli commit’te (sızıntının “düzeltildiği” yerde) neyin değiştiğini görmek istiyoruz. git show komutuyla bir commit’in içeriğini (diff) görebiliriz.

git show <COMMIT_HASH>
# Örnek: git show 4b3d

Alternatif olarak, o commit’e geri dönebilirsiniz:

git checkout <COMMIT_HASH_OF_ADD_CREDENTIALS>
cat README.md

git show kullanmak genellikle daha pratiktir. Çıktıda - ile başlayan (genelde kırmızı) satırlar silinen satırları gösterir. Şifreyi orada, silinmiş satırlar arasında bulacaksınız!

Öğrendiklerimiz

  1. Git Log: git log, projenin tarihçesini kronolojik olarak gösterir.
  2. Git Show: git show <commit>, belirli bir değişikliğin detaylarını görmenizi sağlar.
  3. Güvenlik Dersi: Asla şifreleri veya API anahtarlarını versiyon kontrol sistemine (git) atmayın. Sonradan silseniz bile, geçmişte (history) sonsuza kadar saklanırlar (tarihçeyi tamamen silmediğiniz sürece).