← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 5 → Seviye 6

Teknik Not

Bağlam

Bazen, elimizde dosyanın adı yoktur ama özellikleri vardır. Bir sistem yöneticisi veya güvenlik uzmanı olarak, binlerce dosya arasından “700MB’dan büyük log dosyalarını” veya “son 1 saatte değiştirilmiş dosyaları” bulmanız gerekebilir.

Bu seviye, Linux’un en güçlü arama motoru olan find komutunu öğretiyor.

Hedef

Şifre, inhere klasörünün (veya alt klasörlerinin) bir yerindeki dosyada saklı. Dosyanın özellikleri:

  1. Human-readable (Okunabilir metin dosyası)
  2. 1033 bytes boyutunda
  3. Not executable (Çalıştırılabilir değil)

Çözüm

Önce inhere klasörüne girelim:

cd inhere

Eğer sadece ls -R (recursive/özyineli) yaparsak, ekranımız yüzlerce dosya ile dolar. Samanlıkta iğne aramak gibidir. Bunun yerine find komutunu ve filtrelerini kullanacağız.

Gereksinimlerimizi find diline çevirelim:

  • Dosya olsun (-type f)
  • Boyutu 1033 bayt olsun (-size 1033c). (Linux’ta c suffix’i bayt anlamına gelir. k kilobayt, M megabayt).
  • Çalıştırılabilir olmasın (! -executable). (Ünlem işareti “not” yani “değil” anlamındadır).

Komutu birleştirelim:

find . -type f -size 1033c ! -executable

Çıktı:

./maybehere07/.file2

Tek bir sonuç döndü! Bu bizim aradığımız dosya. İçeriğini okuyalım:

cat ./maybehere07/.file2
# Şifre burada

Not: Sonuçta boşluk içeren bir dosya yolu olsaydı (örneğin ./maybe here/.file2), tırnak içine almamız (cat "./maybe here/.file2") gerekirdi.

Öğrendiklerimiz

  1. find Filtreleri:
    • -size: Dosya boyutuna göre arama (1033c = 1033 bayt, +10M = 10MB’dan büyük).
    • -type: Dosya türüne göre (f = file, d = directory).
    • -executable: İzinlere göre arama.
  2. Mantıksal Operatörler: ! (NOT) operatörü ile istemediğimiz özellikleri hariç tutabiliriz.

Linux’ta bir şeyi “bulamıyorsanız”, muhtemelen find komutunu yeterince spesifik kullanmıyorsunuzdur.