Web CTF: Nereden Başlanır, Nelere Bakılır?
Web, çoğu insanın CTF'e ilk adım attığı kategoridir çünkü her gün kullandığın tarayıcının içinde geçer. Bu rehberde bir web görevine oturduğunda ilk nereye bakacağını, hangi araçları açacağını ve ipuçlarının genelde nerede saklandığını sıfırdan öğreneceksin.
- İlk refleks her zaman kaynak kodu ve tarayıcı geliştirici araçlarıdır (F12).
- HTTP başlıkları, çerezler ve JWT token'ları görevin çoğu ipucunu taşır.
- robots.txt, yorum satırları ve tahmin edilebilir URL'ler gizli uç noktaları ele verir.
- Pratik'te bazı web görevleri 'sunucusuz'dur: indirdiğin dosyayı yerelde incelersin.
- Web CTF'te öğrendiklerini yalnızca yetkili ve eğitim ortamlarında kullan.
Web CTF Nedir, Neden Kolay Bir Başlangıç?
Web kategorisindeki görevlerde amaç, bir web sayfasının ya da uygulamanın içine gizlenmiş bir bayrağı (flag) bulmaktır. Şifreleme veya tersine mühendislik bilmene gerek yoktur; başlangıçta ihtiyacın olan tek şey bir tarayıcı ve merak.
Web'in yeni başlayanlara uygun olmasının sebebi, her şeyin gözünün önünde olmasıdır. Sayfa senin bilgisayarında çalışır, yani sayfanın kendisi çoğu zaman sana ipucunu verir. CTF'in ne olduğuna dair genel resmi henüz görmediysen önce CTF Nedir? sayfasına göz atman iyi olur.
İlk Refleks: Kaynak Kod ve Geliştirici Araçları
Bir web görevine oturduğunda yapılacak ilk şey neredeyse her zaman aynıdır: sayfaya değil, sayfanın altına bak. Bunun için iki temel araç var.
Sayfa Kaynağı (View Source)
Sağ tık → "Sayfa Kaynağını Görüntüle" (veya Ctrl+U) ile sayfanın ham HTML'ini görürsün. Geliştiriciler ipuçlarını çoğu zaman yorum satırlarına gizler ve tarayıcı bunları ekranda göstermez:
<div class="giris">
<!-- yedek panel: /y0netim-eski adresinde -->
<input type="password" name="pass">
</div>
Ekranda görünmeyen bu satır sana yeni bir sayfa adresi fısıldıyor. Web görevlerinde en sık kaçırılan ipuçları tam da buradadır.
Geliştirici Araçları (F12)
F12 tuşu tarayıcının en güçlü aracını açar. Yeni başlayan olarak şu üç sekmeyi tanı:
- Elements — Sayfa yüklendikten sonra JavaScript'in oluşturduğu güncel HTML. Kaynak kodda olmayan gizli alanlar burada görünebilir.
- Network — Sayfanın arka planda yaptığı istekleri gösterir. Sayfayı yenile, bir isteğe tıkla, gelen cevabı ve başlıkları oku.
- Application / Storage — Çerezleri (cookie), yerel depolamayı ve token'ları burada görür ve düzenlersin.
HTTP, Çerez ve JWT: Tarayıcının Konuştuğu Dil
Tarayıcın ile sunucu arasındaki her konuşma HTTP ile olur. Bu konuşmanın iki tarafı vardır: senin gönderdiğin istek ve sunucunun döndüğü cevap. İkisinin de "başlık" (header) denen ek bilgileri vardır ve ipuçları sık sık burada saklanır. Network sekmesinde bir istek seçip cevabın başlıklarına bakmayı alışkanlık haline getir.
Çerezler, sunucunun seni hatırlamak için tarayıcına bıraktığı küçük notlardır. Application sekmesinde bir çereze bakınca, örneğin şöyle bir şey görebilirsin:
rol=ziyaretci
oturum=abc123
CTF'te öğretici amaçla bu değerleri kendi tarayıcında düzenleyip sayfanın davranışının nasıl değiştiğini gözlemlersin. Gerçek bir sistemde bunu izinsiz yapmak yasa dışıdır; buradaki mantık, uygulamanın çereze ne kadar körü körüne güvendiğini anlamaktır.
JWT Nedir, Neden Sık Karşına Çıkar?
JWT (JSON Web Token), modern sitelerin çok kullandığı bir oturum belirtecidir. Noktayla ayrılmış üç parçadan oluşur:
eyJhbGciOiJ... . eyJ1c2VyIjoi... . Sfl3kxw...
başlık gövde imza
İlk iki parça şifreli değildir; yalnızca base64url ile kodlanmıştır. Yani gövdeyi çözünce token'ın içinde ne yazdığını (örneğin {"rol":"ziyaretci"}) okuyabilirsin. Üçüncü parça olan imza, içeriğin değiştirilmediğini doğrular. Web CTF görevleri sana genelde şunu öğretir: imzasını düzgün doğrulamayan bir uygulama, kandırılabilir. Bunu yalnızca eğitim ortamında, kavramı anlamak için denersin.
Gizli Uç Noktalar: robots.txt ve Tahmin Edilebilir Adresler
Bir sitenin ana sayfasında görünmeyen ama var olan sayfaları vardır. Bunları bulmanın birkaç klasik yolu var:
- robots.txt — Sitenin kök adresine
/robots.txtekle. Bu dosya arama motorlarına "şuralara girme" der; ama tam da bu yüzden gizli klasörlerin adresini ele verir:User-agent: * Disallow: /panel-arsiv/ Disallow: /gizli-not.txt - Tahmin edilebilir isimler —
/admin,/backup.zip,/.git/gibi yaygın adresler CTF'te sık sık bilerek açık bırakılır. - Yorum ve JavaScript içi ipuçları — Kaynak kodda geçen bir dosya adı ya da adres, seni doğrudan hedefe götürebilir.
Bu tekniği kullanan görevleri denemek için Web kategorisindeki challenge'lara bakabilirsin.
Pratik'te "Sunucusuz Web": Dosyayı İncele
Bazı web görevleri canlı bir sunucuda değil, sana indirilen bir dosya olarak verilir. Buna kısaca sunucusuz web diyelim. Bir .html dosyası ve yanındaki JavaScript'i indirirsin; mantığın tamamı senin tarayıcında, yani gözünün önünde çalışır.
Burada yaklaşım biraz değişir: sunucuya istek atmak yerine dosyanın içindeki kodu doğrudan okursun. Örneğin bir giriş kontrolü şöyle görünebilir:
if (girilenParola === atob("ZmxhZ19pcHVjdQ==")) {
ekranaGoster();
}
Buradaki atob(), base64 çözen bir fonksiyondur. Kod, doğruluğu kontrol ettiği değeri kodlanmış biçimde içinde taşıyor. İpucu sunucuda değil, indirdiğin dosyada gizli; tek yapman gereken kodu dikkatle okumak ve kodlanmış parçaları çözmek. Bu, web ile tersine mühendislik kategorisi arasındaki köprüyü de sana gösterir.
Küçük Bir Yol Haritası
Bir web görevine oturduğunda şu sırayı bir alışkanlık haline getir:
- Sayfaya bak, sonra
Ctrl+Uile kaynağı ve yorum satırlarını oku. F12aç; Elements, Network ve Application sekmelerini gez.- Çerezleri, token'ları ve HTTP başlıklarını incele.
/robots.txtve tahmin edilebilir adresleri dene.- Sunucusuz bir görevse indirdiğin dosyanın kodunu satır satır oku.
Unutma: burada öğrendiğin her şey savunma ve fark etme içindir; bu becerileri yalnızca yetkili ve eğitim amaçlı ortamlarda kullan. Diğer kategorilere nasıl yaklaşacağını görmek için Rehber ana sayfasına dönebilirsin. En iyi öğrenme yolu ise oturup denemektir.
Sıkça Sorulan Sorular
Web CTF için programlama bilmem gerekir mi?
Başlangıç için hayır. İlk görevlerde tarayıcı geliştirici araçlarını kullanmak, kaynak kodu okumak ve URL denemek yeterlidir. HTML ve biraz JavaScript okuyabilmek ise ilerledikçe işini çok kolaylaştırır.
Geliştirici araçlarını (F12) nasıl açarım?
Çoğu tarayıcıda klavyeden F12 tuşuna basman yeterli. Alternatif olarak sayfada sağ tıklayıp 'İncele' seçeneğini de kullanabilirsin. Mac'te genelde Cmd+Option+I kısayolu çalışır.
JWT'nin içini okumak onu 'kırmak' mı demek?
Hayır. JWT'nin başlık ve gövde kısmı şifreli değil, sadece base64url ile kodludur; okumak son derece normaldir. 'Kırmak' ise imzayı doğrulamayan bir uygulamayı kandırmaktır ve bunu yalnızca CTF gibi yetkili eğitim ortamlarında denemelisin.
Sunucusuz web görevi ne demek?
Görevin canlı bir sitede değil, sana indirilen dosyalarda (HTML/JavaScript) verilmesi demek. Tüm mantık senin tarayıcında çalıştığı için ipucu dosyanın içindedir; sunucuya istek atmak yerine kodu okuyarak ilerlersin.
robots.txt'ye bakmak izinsiz bir şey mi?
Hayır. robots.txt bir sitenin herkese açık, kök adresinde yayınladığı bir dosyadır ve okunması tamamen olağandır. CTF'te bu dosya sık sık gizli klasörlerin adresini ele verdiği için ilk bakılan yerlerden biridir.
Hadi pratiğe dök
Bu rehberdeki teknikleri Web kategorisindeki gerçek challenge’larda dene.
Web Challenge’ları →