OverTheWire Bandit: Seviye 31 → Seviye 32
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.txtolmalı 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
.gitignore: Git’in takip etmemesini istediğimiz dosyaları (loglar, gereksiz build dosyaları vb.) belirttiğimiz dosyadır.git add -f:.gitignoretarafından engellenen bir dosyayı zorla takibe almak (stage etmek) için kullanılır.- 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ı.