Level 0 SSH Bağlantısı

🎯 Hedef

Bandit sunucusuna SSH ile bağlanmak

Komutlar

Terminal
ssh bandit0@bandit.labs.overthewire.org -p 2220

Şifre: bandit0

📝 SSH Parametreleri

Parametre Açıklama
ssh Secure Shell - Güvenli uzak bağlantı protokolü
kullanıcı@sunucu Bağlanılacak kullanıcı adı ve sunucu adresi
-p PORT p (port): Port numarası belirt (varsayılan: 22)
-i dosya i (identity): SSH private key dosyası
-v v (verbose): Detaylı çıktı (debug için)
-l kullanıcı l (login): Kullanıcı adı (alternatif sözdizimi)
-X X11 forwarding (GUI uygulamalar için)
-L port:host:hostport Local port forwarding (tünel)

💡 SSH Kullanım Örnekleri

  • ssh user@192.168.1.10 - IP ile bağlan
  • ssh -p 2222 user@example.com - Özel port
  • ssh -i ~/.ssh/id_rsa user@server - Key dosyası ile
  • ssh user@server "ls -la" - Tek komut çalıştır ve çık

Level 0 → 1 Dosya Okuma

🎯 Hedef

Ana dizindeki readme dosyasını okuyarak bir sonraki şifreyi bul

Komutlar

Dosyaları Listele
ls
ls -la
Dosyayı Oku
cat readme

📝 Komut Açıklamaları

Komut/Parametre Açıklama
ls List - Dosya ve dizinleri listele
ls -l -l (long format): Detaylı liste (izinler, sahip, boyut, tarih)
ls -a -a (all): Gizli dosyaları da göster (. ile başlayanlar)
ls -la -l + -a: Gizli dosyalar dahil detaylı liste
cat dosya Concatenate - Dosya içeriğini ekrana yazdır

💡 Diğer Faydalı ls Parametreleri

  • ls -h - Human readable: Dosya boyutlarını okunabilir formatta göster (KB, MB)
  • ls -t - Time: Değiştirilme tarihine göre sırala
  • ls -r - Reverse: Ters sırada listele
  • ls -lah - Tüm parametreleri birleştir

Level 1 → 2 Özel Karakterli Dosya

🎯 Hedef

Tire (-) karakteri ile başlayan dosyayı okumak

Problem

Dosya adı - olduğunda normal cat - komutu çalışmaz (stdin olarak algılanır)

Çözüm Yöntemleri

Yöntem 1: Tam Yol
cat ./-
Yöntem 2: Başka Komut
cat < -

💡 İpucu

./ öneki, dosyanın mevcut dizinde olduğunu belirtir ve özel karakter sorununu çözer.

Level 2 → 3 Boşluklu Dosya Adı

🎯 Hedef

İçinde boşluk olan dosya adını okumak: spaces in this filename

Çözüm Yöntemleri

Yöntem 1: Tırnak Kullan
cat "spaces in this filename"
Yöntem 2: Escape Karakter
cat spaces\ in\ this\ filename
Yöntem 3: Tab Completion
cat spa[TAB tuşuna bas]

📝 Açıklama

  • " ": Tırnak içindeki her şey tek kelime olarak algılanır
  • \: Escape karakteri - sonraki karakteri özel olarak yorumla
  • TAB: Otomatik tamamlama - dosya adını otomatik doldurur

Level 3 → 4 Gizli Dosya

🎯 Hedef

inhere dizinindeki gizli dosyayı bul

Komutlar

Dizine Geç
cd inhere
Gizli Dosyaları Göster
ls -la
Dosyayı Oku
cat .hidden

📝 Dizin Gezinme Komutları

Komut Açıklama
cd dizin Change Directory - Belirtilen dizine geç
cd .. Bir üst dizine çık
cd ~ Home (ev) dizinine git
cd / Root (kök) dizine git
cd - Önceki dizine geri dön
pwd Print Working Directory - Mevcut dizini göster

📝 Gizli Dosyalar

Linux'ta . ile başlayan dosyalar gizli kabul edilir.

  • .hidden - Gizli dosya
  • .bashrc - Bash konfigürasyon dosyası
  • .ssh/ - SSH ayarları dizini
  • ls -a - Gizli dosyaları gösterir

Level 4 → 5 İnsan Tarafından Okunabilir Dosya

🎯 Hedef

inhere dizininde 10 dosya var. Hangisi ASCII text formatında?

Komutlar

Dizine Geç
cd inhere
Dosya Tiplerini Kontrol Et
file ./*
ASCII Dosyayı Bul ve Oku
file ./* | grep "ASCII text"
cat ./-file07

📝 Dosya Tipi Belirleme Komutları

Komut/Parametre Açıklama
file dosya Dosya tipini belirle (içeriğine bakarak)
file * Mevcut dizindeki tüm dosyaların tipini göster
file ./* Gizli dosyalar dahil tüm dosyaların tipi
* Wildcard - Tüm dosyaları temsil eder
| Pipe - Bir komutun çıktısını diğer komuta gönder
grep "text" Çıktıda "text" içeren satırları filtrele

📋 Yaygın Dosya Tipleri

  • ASCII text - Metin dosyası (okunabilir)
  • data - Binary veri (okunabilir değil)
  • executable - Çalıştırılabilir dosya
  • directory - Dizin
  • symbolic link - Sembolik bağlantı
  • empty - Boş dosya

💡 Pipe (|) Kullanım Örneği

# Komut parçalara ayrılışı:
file ./*              → Tüm dosyaların tipini göster
|                     → Çıktıyı bir sonraki komuta gönder
grep "ASCII text"     → Sadece ASCII text içeren satırları al

Level 5 → 6 Özel Özelliklere Sahip Dosya

🎯 Hedef

Şu özelliklere sahip dosyayı bul:

  • İnsan tarafından okunabilir
  • 1033 bytes boyutunda
  • Çalıştırılabilir değil

Komutlar

Find Komutu ile Arama
cd inhere
find . -type f -size 1033c ! -executable
Alternatif: Detaylı Arama
find . -type f -size 1033c -readable ! -executable -exec file {} \;
Dosyayı Oku
cat ./maybehere07/.file2

📝 Find Komut Parametreleri

Parametre Açıklama
. Mevcut dizinden başla (başlangıç noktası)
-type f f (file): Sadece dosyalar (dizinler hariç)
-type d d (directory): Sadece dizinler
-size 1033c 1033 byte boyutunda dosyalar (c = bytes/characters)
! -executable ! (NOT): Çalıştırılabilir OLMAYAN dosyalar
-readable Okunabilir izne sahip dosyalar
-exec Bulunan her dosya için komut çalıştır
{} Bulunan dosya adını temsil eder
\; -exec komutunun sonu

💡 Find Boyut Birimleri

  • c - bytes (characters)
  • k - kilobytes (1024 bytes)
  • M - megabytes (1024 KB)
  • G - gigabytes (1024 MB)

🔍 Diğer Faydalı Find Parametreleri

  • -name "*.txt" - Dosya adına göre ara (wildcard destekler)
  • -iname "*.TXT" - Büyük/küçük harf duyarsız arama
  • -mtime -7 - Son 7 gün içinde değiştirilen dosyalar
  • -user bandit7 - Belirli kullanıcıya ait dosyalar
  • -perm 644 - Belirli izinlere sahip dosyalar

Level 6 → 7 Sunucu Genelinde Arama

🎯 Hedef

Sunucunun herhangi bir yerinde şu özelliklere sahip dosyayı bul:

  • bandit7 kullanıcısına ait
  • bandit6 grubuna ait
  • 33 bytes boyutunda

Komutlar

Tüm Sistemde Ara
find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/null
Bulunan Dosyayı Oku
cat /var/lib/dpkg/info/bandit7.password

📝 Açıklama

Parametre Açıklama
/ Root (kök) dizinden başla - tüm sistemi tara
-user bandit7 Dosya sahibi bandit7 olan dosyaları bul
-group bandit6 Grup sahibi bandit6 olan dosyaları bul
-size 33c Tam olarak 33 byte boyutunda dosyalar
2> Standart hata çıktısını (stderr) yönlendir
/dev/null "Çöp kutusu" - gönderilen her şeyi sil/yok say

💡 Hata Yönlendirme (Redirection) Detayları

Yönlendirme Açıklama
1 stdout - Standart çıktı (normal mesajlar)
2 stderr - Standart hata (error mesajları)
> Yönlendir (üzerine yaz)
>> Yönlendir (sona ekle)
2>/dev/null Hataları gizle (Permission denied vb.)
2>&1 Hataları normal çıktıyla birleştir
&>/dev/null Hem stdout hem stderr'i gizle (tüm çıktı)

📌 Örnekler

  • command > output.txt - Çıktıyı dosyaya yaz
  • command 2> errors.txt - Hataları dosyaya yaz
  • command &> all.txt - Her şeyi dosyaya yaz
  • command >> log.txt - Dosyanın sonuna ekle

Level 7 → 8 Büyük Dosyada Kelime Arama

🎯 Hedef

data.txt dosyasında "millionth" kelimesinin yanındaki şifreyi bul

Komutlar

Grep ile Ara
grep "millionth" data.txt
Alternatif: Sadece Şifreyi Al
grep "millionth" data.txt | awk '{print $2}'

📝 Grep Parametreleri

Parametre Açıklama
grep "kelime" dosya Dosyada kelime ara ve içeren satırları göster
grep -i i (ignore case): Büyük/küçük harf duyarsız arama
grep -v v (invert): Eşleşmeyenleri göster (tersi)
grep -n n (number): Satır numaralarını göster
grep -c c (count): Eşleşen satır sayısını göster
grep -r r (recursive): Dizinlerde özyinelemeli ara
grep -w w (word): Tam kelime eşleşmesi (kelime sınırları)
grep -A 3 A (after): Eşleşmeden sonraki 3 satırı da göster
grep -B 3 B (before): Eşleşmeden önceki 3 satırı da göster
grep -C 3 C (context): Önceki ve sonraki 3 satırı göster

🔧 AWK Komutu

  • awk '{print $2}' - İkinci sütunu (kelimeyi) yazdır
  • $1, $2, $3 - Sütun numaraları (boşluklarla ayrılmış)
  • $0 - Tüm satır
  • $NF - Son sütun

📌 Grep Örnekleri

  • grep -i "error" log.txt - ERROR, error, Error hepsini bul
  • grep -n "TODO" *.js - Tüm .js dosyalarında TODO ara, satır no göster
  • grep -r "password" /etc/ - /etc dizininde password ara
  • grep -v "^#" config.txt - Yorum satırlarını (# ile başlayan) gösterme

Level 8 → 9 Benzersiz Satır Bulma

🎯 Hedef

data.txt dosyasında sadece bir kez geçen satırı bul

Komutlar

Sırala ve Benzersiz Bul
sort data.txt | uniq -u
Alternatif: Detaylı Analiz
# Tekrar sayılarını göster
sort data.txt | uniq -c | sort -n

# Sadece 1 kez geçenleri al
sort data.txt | uniq -c | grep "^ *1 "

📝 Sort Parametreleri

Parametre Açıklama
sort Satırları alfabetik olarak sırala (A-Z)
sort -r r (reverse): Ters sırada (Z-A)
sort -n n (numeric): Sayısal sıralama (1,2,10 yerine doğru sıra)
sort -k 2 k (key): 2. sütuna göre sırala
sort -u u (unique): Sırala ve tekrarları kaldır
sort -t ',' t (delimiter): Ayırıcı karakter belirt (CSV için)

📝 Uniq Parametreleri

Parametre Açıklama
uniq Ardışık tekrarlanan satırları kaldır (1 tane bırak)
uniq -u u (unique): Sadece benzersiz olanları göster (tekrar edilmeyenler)
uniq -d d (duplicates): Sadece tekrar edenleri göster
uniq -c c (count): Her satırın kaç kez geçtiğini göster
uniq -i i (ignore case): Büyük/küçük harf duyarsız

⚠️ Önemli Not

uniq komutu sadece ardışık (yan yana) tekrarları tespit eder!

# YANLIŞ - çalışmaz
cat dosya.txt | uniq -u

# DOĞRU - önce sırala
cat dosya.txt | sort | uniq -u

📌 Pipe (|) Zinciri Açıklaması

sort data.txt | uniq -c | sort -n
  1. sort data.txt - Dosyayı sırala
  2. | uniq -c - Tekrar sayılarını hesapla
  3. | sort -n - Sayısal olarak sırala (en az tekrarlananlar önce)

Level 9 → 10 Binary Dosyada Metin Arama

🎯 Hedef

data.txt binary dosyasında birkaç = karakteri ile başlayan insan tarafından okunabilir metni bul

Komutlar

Strings ile Okunabilir Metni Çıkar
strings data.txt
= Karakterleri ile Filtrele
strings data.txt | grep "=="
Daha Spesifik Arama
strings data.txt | grep "^=="

📝 Strings Komutu Parametreleri

Parametre Açıklama
strings dosya Binary dosyadaki okunabilir ASCII metinleri çıkar
strings -n 10 n: Minimum karakter uzunluğu (varsayılan 4)
strings -a a (all): Tüm dosyayı tara (sadece data section değil)
strings -e l e (encoding): Karakter kodlaması (s=single, l=little, b=big)
strings -t x t (radix): Offset'i göster (o=octal, x=hex, d=decimal)

💻 Kullanım Senaryoları

  • Çalıştırılabilir dosyalarda gizli mesajlar bulmak
  • Kötü amaçlı yazılım analizi
  • Dosyalarda URL, email, şifre aramak
  • Resim dosyalarında meta data bulmak

� Regex (Regular Expression) Temelleri

Sembol Açıklama Örnek
^ Satır başı ^== → == ile başlayan satırlar
$ Satır sonu txt$ → txt ile biten satırlar
. Herhangi bir karakter a.b → axb, a5b, a b eşleşir
* 0 veya daha fazla ab*c → ac, abc, abbc
+ 1 veya daha fazla ab+c → abc, abbc (ac değil)
? 0 veya 1 (opsiyonel) colou?r → color, colour
[abc] Karakter seti [aeiou] → herhangi bir sesli harf
[^abc] Değil (NOT) [^0-9] → rakam olmayan
[a-z] Aralık [a-zA-Z] → tüm harfler
| VEYA (OR) cat|dog → cat veya dog
\ Escape (özel karakteri normal karakter yap) \. → nokta karakteri

📌 Pratik Regex Örnekleri

  • grep "^#" - # ile başlayan satırlar (yorumlar)
  • grep "[0-9]\{3\}-[0-9]\{4\}" - Telefon numarası formatı
  • grep "^$" - Boş satırlar
  • grep -E "error|warning|fail" - VEYA operatörü (-E extended regex)
  • grep "[A-Z][a-z]*" - Büyük harfle başlayan kelimeler

📚 Komut Özet Tablosu

Level Ana Komut Öğrenilen Kavram
0 → 1 cat, ls Temel dosya okuma
1 → 2 cat ./- Özel karakterli dosyalar
2 → 3 cat "dosya adı" Boşluklu dosya adları
3 → 4 ls -la Gizli dosyalar
4 → 5 file Dosya tipi belirleme
5 → 6 find -size -executable Gelişmiş dosya arama
6 → 7 find -user -group Kullanıcı/grup filtreleme
7 → 8 grep Metin arama
8 → 9 sort | uniq -u Benzersiz satır bulma
9 → 10 strings Binary dosya analizi

💡 Genel İpuçları ve En İyi Pratikler

🔍 Dosya Arama Teknikleri

  • find komutu dosya sistemi araması için en güçlü araç
  • locate daha hızlı ama veritabanı güncel olmayabilir
  • which çalıştırılabilir dosyaların PATH'te nerede olduğunu bulur

📝 Metin İşleme

  • grep - Metin arama ve filtreleme
  • awk - Sütun bazlı işlemler
  • sed - Metin değiştirme ve düzenleme
  • cut - Belirli alanları kesme

🔗 Pipe (|) Kullanımı

Komutları zincirleyerek güçlü işlemler yapın:

cat dosya.txt | grep "aranan" | sort | uniq | wc -l

⚡ Klavye Kısayolları

  • Ctrl+C - Komutu iptal et
  • Ctrl+Z - Komutu arka plana at
  • Ctrl+R - Komut geçmişinde ara
  • TAB - Otomatik tamamlama
  • ↑/↓ - Önceki/sonraki komut

📚 Ek Çalışma Kaynakları

🃏

Flashcard'lar

40 interaktif kart ile komutları pekiştir

📝

Test Merkezi

30 soru ile bilgini ölç