August 9, 2026
CTF Writeup: bilesenlerarası (6. BayrakSende CTF)
Herkese selamlar, bu yazımda 6. BayrakSende CTF yarışması için geliştirdiğim web kategorisindeki “bilesenlerarası” sorusunun detaylı çözüm…

By cibrx1453
2 min read
Herkese selamlar, bu yazımda 6. BayrakSende CTF yarışması için geliştirdiğim web kategorisindeki "bilesenlerarası" sorusunun detaylı çözüm ve analizlerini aktaracağım. Ben doğrudan çözümlere giriş yapacağım ancak siz kendi cihazınızda çalıştırmak isterseniz en altta belirttiğim şekilde docker ile kolayca çalıştırabilirsiniz.
Siteye girdiğimizde bizi ürünler karşılıyor. Ürünlere tıkladığımızda küçük bir pencerede ürünün fotoğrafı ve detaylarını görüntülüyoruz.
Burpsuite yardımıyla http trafiğini incelediğimizde /bilesen.php?yol=src/img/tir7&tip=jpg adresine yapılan istekleri ve cevap olarak gelen fotoğrafları görüntülüyoruz.
Bu URL'yi detaylıca incelediğimizde yol ve tip parametrelerini görüyoruz. Yol parametresine normalde bulunmayacak rastgele şeyler yazarak görsel bulunamadığında ne tür bir cevap geleceğini görmek için isteği tekrar yolluyoruz.
Dosya bulunamadı uyarısını aldık. Burada yol ve tip parametrelerinin backend'de dinamik yerleştirilebileceği ihtimalini göz önünde bulundurarak path traversal zafiyetinin bulunup bulunmadığını kontrol etmeye başlıyoruz. Bunun için tüm Linux sistemlerinde bulunan /etc/host.conf dosyasını referans alabiliriz. URL adresimizi:
/bilesen.php?yol=../../../../../../../../../../../etc/host&tip=conf şeklinde güncelliyoruz. Burada ../ ile üst dizinlere geçmeyi amaçlıyoruz, bu kadar fazla kullanmamızın sebebi ise kök dizine geçtiğimizden emin olmak. Yol ve tip olarak ayrılmasının sebebi, önceki örneklerde dosya adı ve uzantısının nokta (.) öncesi ve sonrası olarak parçalandığını düşünmemiz. İsteğimizi bu şekilde gönderdiğimizde cevabını alıyoruz.
Bu cevap tahminlerimizi doğruluyor, yani path traversal zafiyetini ve nasıl kullanılacağını örnek üzerinden görmüş oluyoruz. Bu bir CTF sorusu olduğu için /etc/host.conf dosyasını okumak bir işimize yaramıyor. Kaynak kodu görüntülemek için şu URL'yi hazırlıyoruz:
/bilesen.php?yol=../../../../../../../../../../../var/www/html/index&tip=php
Daha önceden gelen cevapların server kısmında Apache Ubuntu bilgilerini gördüğümüz için /var/www/html içerisinde kaynak kodlarının olabileceği ihtimaline karşın bu payload'u hazırlıyoruz. Dosya uzantısı olarak HTML veya PHP gibi şeyler denenebilir, biz PHP olarak isteği yolladığımızda kaynak kodunu görüntülüyoruz.
Kaynak kodunun en üstünde yorum satırına alınmış bir satır bulunuyor. Tarayıcı üzerinden admin_3_son_guncel_prod_hazir_1453.php adresine gitmek istediğimizde ana dizine yönlendiriliyor ve herhangi bir şey göremiyoruz. Bu dosyanın kaynak kodunu okumak için aşağıdaki payload'u hazırlıyoruz ve yolluyoruz:
/bilesen.php?yol=../../../../../../../../../../../var/www/html/admin_3_son_guncel_prod_hazir_1453&tip=php
Gelen cevabın üst satırlarında eğer kullanıcı admin değilse / adresine yönlendirme yapan bir bölüm var. Ardından satırlardaki kodlar çalışıyor çünkü exit() fonksiyonu kullanılmamış. Ancak biz bu cevapları tarayıcı üzerinden doğrudan baktığımızda göremiyoruz bunun yerine doğrudan / adresine yönlendiriliyoruz. Kodun devamında flag ekrana basılıyor. Flag bilgisine erişmek için Burp Suite yardımıyla isteğin yönlendirme yapılmadan önceki ham cevabını (Response) görüntülememiz gerekiyor.
Gelen ham cevapta flag bilgisini görüntülüyoruz ve çözüm kısmı burada son buluyor.
Kendi Cihazımızda Nasıl Calıştırırız?
git clone https://github.com/cibrx/CTF_bilesenler_arasi.git
cd CTF_bilesenler_arasi
docker build -t ctf_bilesen .
docker run -p 8080:80 ctf_bilesengit clone https://github.com/cibrx/CTF_bilesenler_arasi.git
cd CTF_bilesenler_arasi
docker build -t ctf_bilesen .
docker run -p 8080:80 ctf_bilesenKomutları ile kendi cihazınızda test edebilirsiniz, 8080 portu yerine kendi istediğiniz bir portu da yazabilirsiniz.
- BayrakSende için hazırladığım path traversal zafiyetini içeren bilesenlerarası adlı CTF sorusunun çözüm yazısı burada son buluyor. Sorunun kaynak koduna GitHub profilimden erişebilirsiniz. İlerleyen zamanlarda yarışmadaki diğer soruların çözümlerini de burada paylaşacağım, takipte kalın. Buraya kadar okuduğunuz için teşekkür ederim, sonraki yazılarda görüşmek üzere.