Kasıtlı zafiyetler içeren PHP + MySQL + Apache CTF laboratuvarı
Siberpunk görselli, hikâye odaklı, Türkçe arayüzlü ve eğitim/lab ortamları için tasarlanmış bir çalışma.
TryHackUs CTF, bilinçli olarak zafiyet bırakılmış challenge yüzeyleri etrafında tasarlanmış klasik bir LAMP tarzı eğitim laboratuvarıdır.
Proje şu yapıyı kullanır:
- Vanilla PHP
- MySQL / MariaDB
- Apache + mod_rewrite + .htaccess
- Türkçe arayüz metinleri
- İngilizce challenge ipuçları ve teknik yönlendirmeler
Şunlar için uygundur:
- yerel lab kurulumları
- özel eğitim ortamları
- demo makineleri / workshop egzersizleri
- self-hosted CTF pratiği
İnternete açık production yayını için tasarlanmamıştır.
- Hikâye odaklı underground portal teması
- Cyberpunk / terminal esintili arayüz
- 20 challenge flag
- Easy → insane zorluk ilerleyişi
- Bilinçli olarak zafiyetli authentication, dosya işlemleri, API ve admin akışları
- Türkçe hikâye/metin yapısı, İngilizce teknik hintler
- Genişletmesi ve özelleştirmesi kolay sade proje yapısı
- PHP 8.1+
- MySQL / MariaDB
- Apache
- mod_rewrite
- .htaccess desteği
.
├── admin/ # Admin paneli, loglar ve yönetim yüzeyleri
├── api/ # Challenge'larda kullanılan API endpoint'leri
├── c2/ # Gizli / chained attack yüzeyleri
├── db/ # Veritabanı başlangıç SQL'i
├── includes/ # Ortak config, auth, db ve helper mantığı
├── static/ # CSS / JS dosyaları
├── uploads/ # Yazılabilir upload hedefi
├── *.php # Ana uygulama sayfaları
├── robots.txt
└── README.md
Başlamadan önce şunların hazır olduğundan emin ol:
- PHP 8.1+
- Apache:
mod_rewriteaçık olmalı.htaccessdesteği açık olmalı
- MySQL veya MariaDB
- Yazılabilir
uploads/klasörü
Önerilen ortam:
- Ubuntu / Debian
- Apache 2.4+
- MariaDB 10.x+
Örnek:
sudo cp -r TryHackUs_CTF /var/www/html/Ya da proje dizinine işaret eden ayrı bir virtual host tanımla.
Düzenlenecek dosya:
includes/config.phpKendi ortamına göre şunları ayarla:
- host / port veya socket
- veritabanı adı
- kullanıcı adı / şifre
- gerekirse base URL
mysql -u root -p < db/setup.sqlchmod -R 775 uploadssudo a2enmod rewrite
sudo systemctl restart apache2http://localhost/THUctf
veya tanımladığın vhost URL’si üzerinden eriş.
| ID | Challenge | Zafiyet |
|---|---|---|
| 01 | Robots | Bilgi sızması |
| 02 | Source Code | Kaynak kod sızması |
| 03 | Cookie Monster | Cookie içinde hassas veri |
| 04 | Reflected XSS | Reflected XSS |
| 05 | Directory Listing | Dizin listeleme |
| 06 | HTTP Header | Header içinde hassas veri |
| 07 | SQL Injection (Login) | Auth bypass |
| 08 | IDOR | Broken object-level authorization |
| 09 | Stored XSS | Kalıcı XSS |
| 10 | Path Traversal | Yetkisiz dosya okuma |
| 11 | File Upload | Sınırsız / hatalı dosya upload |
| 12 | JWT None Algorithm | JWT yanlış yapılandırması |
| 13 | SQL Injection (UNION) | UNION tabanlı SQLi |
| 14 | Broken Access Control | Admin API açığı |
| 15 | Log Injection + Path Traversal | LFI / log poisoning |
| 16 | SSRF | Server-side request forgery |
| 17 | XXE | XML external entity injection |
| 18 | Mass Assignment | Yetki yükseltme |
| 19 | Chained Access | Çok adımlı exploit zinciri |
| 20 | Timing + Extension | Timing leak + hash suistimali |
Bazı challenge’lar klasik Apache / LAMP davranışına dayanır. En sağlıklı sonuç için:
- PHP built-in server yerine Apache tercih et
.htaccessaktif olsun- gerçek bir MySQL / MariaDB instance kullan
- gerekli yerlerde upload klasörü yazılabilir olsun
- encoded-path davranışları test edilecekse Apache tarafında aşağıdaki gibi uyumlu ayar kullan:
AllowEncodedSlashes NoDecodeBu repository, eğitim amacıyla kasıtlı olarak bırakılmış zafiyetler içerir.
Sadece şu ortamlarda kullan:
- yerel sistemler
- izole lab ortamları
- özel CTF / eğitim altyapıları
Ne yaptığını tam bilmiyorsan bunu doğrudan internete açık şekilde yayınlama.
Bu proje yalnızca eğitim ve laboratuvar kullanımı içindir.
İçerdiği zafiyetler bilinçli olarak bırakılmıştır. Bunu public production uygulaması gibi dağıtma veya kullanma.