2025ROL: Full-stack geliştiriciTamamlandı
CTF Yarışma Platformu
Django 4.2 üzerine kurulu; takım sistemi, dinamik puanlama, başarımlar ve detaylı analitik içeren kurumsal düzeyde bir Capture The Flag altyapısı.
- ▹Dinamik puanlama + First Blood
- ▹9 zafiyet kategorisi
- ▹Takım + rozet sistemi
- ▹Kurumsal güvenlik sertleştirmesi
- ▹Docker + PostgreSQL + Redis
Üniversite kulüpleri, şirket içi güvenlik eğitimleri ve CTF programları için tasarladığım tam özellikli bir Capture The Flag yarışma platformu. Kullanıcılar farklı kategorilerdeki güvenlik sorularını çözüyor, puan topluyor, takım kurup liderlik tablolarında yarışıyor.
Öne çıkan özellikler
- Sezon bazlı yarışmalar: Zaman sınırlı, countdown timer'lı sezonlar.
- Dinamik puanlama: Bir soruyu ne kadar çok kişi çözerse puanı o kadar düşer — gerçek CTF mantığı.
- First Blood takibi: Bir soruyu ilk çözen özel olarak işaretlenir.
- Çok adımlı ipucu sistemi ve ön koşul zinciri (bir soruyu çözmeden diğeri açılmaz).
- Takım sistemi: Oluşturma, davet, ayrılma; takım bazlı liderlik.
- Başarım/rozet sistemi, çözüm timeline'ı (canlı akış), writeup paylaşımı (admin onaylı).
- Analitik: Kişisel dashboard, puan grafiği, kategori ilerlemesi, CSV export.
Kategoriler: Web Exploitation, Cryptography, Reverse Engineering, Forensics, Binary Exploitation, OSINT, Steganography, Network, Misc.
Güvenliğe verdiğim önem
CTF platformu, saldıran insanların oynadığı bir yer — dolayısıyla platformun kendisi sağlam olmalı. Login ve flag gönderiminde rate limiting, tüm formlarda CSRF, sunucu tarafı XSS sanitizasyonu, CSP + HSTS + X-Frame-Options + COOP/CORP başlıkları, auth sayfalarında no-store cache kontrolü ve şifrelenmiş (gizli path'li) admin URL'i uyguladım.
Teknoloji
Django 4.2 çekirdek, geliştirmede SQLite / üretimde PostgreSQL, önbellek için Redis. Çok dilli (django-modeltranslation), GitHub benzeri koyu tema, Chart.js ile dinamik puan grafiği. DevOps tarafında multi-stage Dockerfile + docker-compose (Postgres + Redis + Nginx) + Gunicorn.
Öğrendiklerim
Dinamik puanlamayı doğru kurmak sandığımdan zordu: puan her yeni çözümde güncellenince, geçmiş sıralamaların tutarlı kalması için puanı çözüm anında dondurmak yerine sürekli yeniden hesaplayan bir model kurdum. Ön koşul zinciri de graf mantığı gerektirdi — döngüsel bağımlılıkları engellemek gerekti.
İçerik Kanıt ZinciriBitcoin'e çapalandı
Bu içeriğin kriptografik özeti, yayınlandığı anda OpenTimestamps aracılığıyla Bitcoin blok zincirine çapalanmıştır. İndirdiğiniz .ots dosyasını opentimestamps.org üzerinde ya da 'ots verify' komutuyla bağımsız olarak doğrulayabilirsiniz — içeriğin bu tarihte, bu haliyle var olduğu matematiksel olarak kanıtlanır.
SHA-256: 396b75fd202236e3d119dabc57a699513ec7c84d2826af4bba7cade7ad90ee55
⬇ .ots kanıtını indirYorumlar
Henüz yorum yok. İlk yorumu sen yaz!