Daha önce hiçbir CTF'e katılmamış biri olarak ilk maceradan çok keyif aldım. İkinci maceraya başlarken de, ilk maceradaki gibi heyecan içerisindeyim.
Bir önceki yazıya buradan ulaşabilirsiniz:
Bölüm 4 (Aşağıdaki, Pembe) - Floppy2
Bir önceki yazıdaki Bölüm 2'de bulunan www.com
, şimdi işimize yarayacak gibi gözüküyor.
www.com
dosyasının içeriği:
İlk gözüme çarpan şey, Bu dosyanın com
uzantılı bir dosya olmasıydı.
COM uzantısı, ilk kez DOS için 1970'lerde üretilmiştir.
Tabii artık Windows, COM uzantılı dosyalar yerine, "çalıştırılabilir, yürütülebilir" anlamına gelen EXE uzantılı dosyaları kullanıyor.
Bu dosyayı çalıştırabilmek için 16 bit bir bilgisayara ihtiyacımız var. Eğer işletim sisteminiz 32 bit ise işiniz daha kolay olabilir, çünkü daha geçen güne kadar Windows 32 bit, 16 bit uyumlu geliyordu.
Ama benim işletim sistemim 64 bit?
İşte o zaman DOSBOX adlı bir programa ihtiyacınız var.
DOSBOX, DOS işletim sistemi çalıştıran bir emülatör programıdır.
Bunun yanında DEBUG etmek için de bir uygulamaya ihtiyacınız var. Şuradan indirebilirsiniz: debug.zip
Dosyayı indirdikten sonra DOSBOX'u açıyoruz ve istediğimiz klasörü mount ediyoruz yerleştiriyoruz. Daha sonra yerleştirdiğimiz sürücüye giriyoruz ve dosyamızı çalıştırıyoruz.
İndirdiğimiz debug dosyasının komutlarını listelemek için ?
yazıyoruz ve komutlar listeleniyor.
Bize lazım olan komutlar d
memory dump (bellek dökümü), g
go (başlat) ve q
quit (çıkış).
Başlattıktan sonra bellek dökümüna baktığımızda flag'in burada gözüktüğünü görebiliriz.
Flag'imiz, CTF{g00do1dDOS-FTW}
Bölüm 5 (Yukarıdaki, Pembe) - OCR Is Cool!
Caesar Cipher'in Sezar Şifrelemenin ne olduğunu bildiğim için Caesar kelimesini duyar duymaz bu bölümün ne olduğunu az çok kestirebilmiştim. Bize bir ekran görüntüsü verilecek ve OCR (Optical Character Recognition, Optik Karakter Tanıma) ile biz bu yazıyı okuyacağız.
Daha sonra sezar şifreleme metodu kullanarak karakterleri n
adım ileri veya geri getirerek yazıyı okunabilir hale getireceğiz.
Örneğin n=4 olsun.
Öncesi | Sonrası |
---|---|
a | e |
b | f |
c | g |
Merhaba | Qivlefe |
Bunun tersini yaparsak da Qivlefe kelimesinden "Merhaba"'yı bulabiliyoruz.
Px tkx
, We are
'a n=7'de çevriliyor.
Hemen bir Online OCR bulup şansımızı deneyelim. Ve daha sonra Online Caesar Cipher bulup bunu çevirelim.
Şöyle bir metin geçiyor elimize:
Burada da açıkça görüldüğü üzere şifremiz CTF{caesarcipherisasubstitutioncipher}
Bölüm 6 (Ortadaki, Mavi) - ROUTER-UI
Yapılacaklar:
- XSS açığı bul
- XSS açığını Chrome'a kaptırma
- Session bilgilerini çal
- Kedili mail at
XSS Nedir?
Siteler Arası Betik Çalıştırma (XSS), genellikle web uygulamalarında bulunan bir tür bilgisayar güvenlik açıklığıdır. XSS, diğer kullanıcılar tarafından görüntülenen web sayfalarına istemci taraflı kodun enjekte edilmesine imkan verir.
Öncelikle XSS açığı çalışıyor mu diye bir bakalım.
Ve, anında Chrome'a yakalandık. :(
Demek ki XSS açığı varmış. Peki Chrome'un bu açığı engellememesini nasıl sağlayabilirim?
Direk olarak script çalıştırmak yerine bir kullanıcı adı/şifre denediğimde, sayfanın bana verdiği sonuç:
Burada dikkatimi çeken şey, iki adet bölü işareti bulunması. Bu işareti farklı bir siteden script çağırırken kullanabiliriz.
Dönen Mesaj:
Yaşasın! Scriptimizi başarıyla çalıştırdık... mı acaba?
Madem çalıştırdık, neden bir alert
gelmedi? Hemen Chrome Geliştirici Konsolunu açıyorum ve Network sekmesini inceliyorum.
İsteğimizin HTTP portundan gönderilmesi sonucu Mixed Content hatasına yakalanmışız.
Mixed Content hatasının sebebi
Sayfa HTTPS, diğer kaynaklar HTTP bağlantısı üzerinden yüklenirse; güvenli olan SSL sertifikası sebebiyle tarayıcı, güvensiz olan HTTP protokolünden yüklenmeye çalışan verilerin bağlantısını kesiyor.
İsteğimizin HTTPS portundan yapılması gerekiyor. Bunun için hemen bir FireBase projesi açıp hosting ayarladım.
Ve istenen mesaj:
Bundan sonrası çorap söküğü gibi gelecek. Bu JavaScript ile dökümana bir img elementi koyduk mu session bilgileri eilimizde.
Bunun için FireBase üzerinde NodeJS kullanıyorum. Google botunu hacklemek için Google servisi kullanmak gibisi yok.
Sunucu tarafında çalışan index.js
içeriği:
Client tarafında çalışan hack.js
içeriği:
Burada yapılan yöntem şu şekilde:
- Mail olarak
[LINK]/cats
yolluyorum - Arkadaş maili açar açmaz kullanıcı adı ve şifresi önceden belirlenmiş bir şekilde ilgili siteye post ediliyor.
- Sitedeki XSS açığı
[LINK]/hack.js
'i çağırıyor. - hack.js, sayfaya bir resim entegre ediyor. Resmin adresi
[LINK]/session?session=[COOKIE]
şeklinde. [LINK]/session
adresi, veritabanına URL'inde bulduğu parametreleri kaydediyor.- Ben de bu veritabanından parametreleri çekiyorum.
Kısacası, session bilgilerini almak istediğim sunucu, benim JS betiğimi client tarafında çalıştırdığında, kullanıcının tarayıcısından verileri hüpletiyorum.
Mailimi attım ve tuzağıma düşüşünü izledim >:)
Tıkladığını da veritabanımdan kontrol ettim:
Session bilgileri:
"flag=Try the session cookie; session=Avaev8thDieM6Quauoh2TuDeaez9Weja"
Session bilgilerini, konsolda document.cookie="..."
çalıştırarak içeriye sızdım.
Google-Haus Credentials'e sağ tıkladım ve...
Şifre kabak gibi ortaya çıktı. Şifremiz, CTF{Kao4pheitot7Ahmu}
Yeni bittim, yine bittim.
Bu seferki o kadar zor geçmedi sanki? Sorularınızı, yorumlarınızı bekliyorum! ^_^