← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 31 → Seviye 32

Teknik Not

Bağlam

Level 31’deyiz. Hedef yine bir git deposu ama bu sefer sadece veri okumuyoruz, sunucuya bir dosya göndermemiz (upload/push) gerekiyor.

Çözüm

Adım 1: Repoyu Klonla

Localhost engeli nedeniyle kendi bilgisayarınızdan klonlayın:

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

(Şifre: Level 30 şifresi)

Adım 2: Talimatları Oku

İçerideki README.md dosyasını okuyalım:

cat README.md

Bize şunu söylüyor:

“Göreviniz uzak depoya bir dosya push’lamak… Dosya adı key.txt olmalı ve içeriği ‘May I come in?’ olmalı.”

Adım 3: Dosyayı Oluştur

İstenilen dosyayı oluşturalım:

echo 'May I come in?' > key.txt

Adım 4: Engel (.gitignore)

Dosyayı git’e eklemeye çalışalım:

git add key.txt
# Çıktı:
# The following paths are ignored by one of your .gitignore files:
# key.txt
# Use -f if you really want to add them.

Hata aldık! Çünkü depodaki .gitignore dosyası .txt uzantılı dosyaların yüklenmesini engelliyor.

Adım 5: Zorla Ekle (Force Add)

Bu kuralı -f (force) bayrağı ile aşabiliriz:

git add -f key.txt

Adım 6: Commit ve Push

Şimdi dosyayı commit edip sunucuya geri gönderelim:

git commit -m "Add key.txt"
git push

Siz push yaptığınızda, sunucudaki bir script (Git Hook) gönderdiğiniz dosyayı kontrol edecek. Eğer her şey doğruysa, bandit32 şifresini ekrana basacaktır!

Öğrendiklerimiz

  1. .gitignore: Git’in takip etmemesini istediğimiz dosyaları (loglar, gereksiz build dosyaları vb.) belirttiğimiz dosyadır.
  2. git add -f: .gitignore tarafından engellenen bir dosyayı zorla takibe almak (stage etmek) için kullanılır.
  3. Git Hooks: Git olaylarında (push, commit vb.) otomatik tetiklenen scriptlerdir. Bu seviyede sunucu, push işlemimiz sırasında kodumuzu kontrol edip şifreyi veren bir hook kullandı.