Walkthrough

[TR] Siber Yıldız 2020 CTF Writeup

[TR] Siber Yıldız 2020 CTF Writeup

Selamlar herkese, Siber Yıldız 2020 CTF’i birçok alandan sorularla bizleri terletti. Şu anda sorular açık olmadığı için sadece adli bilişim, ağ ve EKS alanlarındaki iki soruyu sizlere anlatacağım. Onlarda pcap dosyası verildiği için bilgisayarımda tek kayıtlı olanlar onlar. Diğer sorularıda bu konu altında paylaşmayı planlıyoruz. Sorular paylaşılırsa daha detaylı anlatabiliriz, paylaşılmazsa aklımızda kalanları sizlere anlatacağız.

Sisteme Saldırdılar, Biraz İnceleme Gerekiyor

Adli Bilişim

Bizlere bir pcap dosyası verilmişti ve “bir saldırı oldu bunu analiz edelim” tarzında bir talimat vardı. PCAP dosyasını indirip WireShark’ta açtım ilk önce.

Pentest.pcapng İnceleme
Pentest.pcapng İnceleme

Paketleri incelediğimde XSS’ten SQL’e her şeyin denendiğini gördüm ve bu beni baya yordu. Çünkü çok paket var ve tam olarak ne aradığımı bilmiyordum. Sonrasında HTTP isteklerini filtreledim ve bir neler olmuş baktım.

Pentest.pcapng İnceleme 2
Pentest.pcapng İnceleme 2

Daha sonrasında HTTP ile dosyaları export edip içlerinde ne olduğuna bakmak aklıma geldi. Bunun için File > Extract object > http  yaptım.

Pentest.pcapng İnceleme 3
Pentest.pcapng İnceleme 3

Gördüğünüz gibi HTTP üzerinden export edilen bütün veriler karşımızda.

Pentest.pcapng İnceleme 4
Pentest.pcapng İnceleme 4

Biraz daha incelediğimde ilgimi go.php isimli bir php dosyası çekti.

Pentest.pcapng İnceleme 5
Pentest.pcapng İnceleme 5

Bu dosyayı Save butonuna basarak kaydettim. Dosyayı açtığımda bir link vardı, bunu bizlere soruyu verdikleri sunucu ile birleştirip girdiğimde flag’i aldım.

Pentest.pcapng İnceleme 6
Pentest.pcapng İnceleme 6

 

Elektirikler Gitti

Ağ ve EKS

Bu soruda EKS’ye bir saldırı olduğunu ve elektriklerin gittiğini söylüyordu. Bizlere yine bir PCAP dosyası verilmişti. Bu PCAP dosyasını indirip WireShark ile açtım.

Ağ ve EKS 1
Ağ ve EKS 1

Paketleri incelediğimde ve sorudan da bunun bir SCADA sistemi olduğunu gördüm. Paketleri incelerken altlara doğru bir şey fark ettim. Telnet ile bağlantı gerçekleştirilmiş kullanıcı adı SCADA_Uıser  şifre ise SCADA_USOM  ‘du. Bu pakete sağ tıklayıp follow > TCP dediğimde bana içeride hangi komutları çalıştırdığını ve benim için önemli olan bir dosyayı göstermektedir.

Ağ ve EKS 2
Ağ ve EKS 2
Ağ ve EKS 3
Ağ ve EKS 3

Burada ilgimi çeken dosya Aciklama.txt idi. Bunu paketlerde biraz daha araştırdığımda içerisinde bir python scripti olduğunu gördüm.

Ağ ve EKS 4
Ağ ve EKS 4

Yine içerisine bakmak için sağ tık > follow > tcp yaptığımda script’i aldım.

Python Script
Python Script

Script’te coils_byte değişkenine bir veri gireceğiz ve bizlere flag’i verecek. Coils dediği için aklıma modbus protokolüne bakmak geldi. Filtreleme kısmına modbus yazdım. İncelediğimde data kısımlarında hex verileri olduğunu gördüm.

Modbus Data
Modbus Data

Bu datayı script’de coils_byte kısmına ekleyip çalıştırdığımda ise yakın olduğumu fakat tam olarak aradığımın bu olmadığını söylüyor.

Python Script Data
Python Script Data

Fakat biraz daha aşağıya indiğimde farklı data’lı tek bir paket buldum.

Modbus Data 2
Modbus Data 2

Bunu script’e ekleyip çalıştırdığımda bir link verdi üstteki sorudaki gibi. Bunu da URL’ye eklediğimde flag’i aldım.

Ağ ve EKS Flag
Ağ ve EKS Flag

 

Büyük Düşün

Kriptografi

Soruda bizleri bir siteye yönlendiriyor, siteye her girişimizde kodlar değişiyor ancak büyük harfler değişmemektedir. Buradaki önemli nokta onlardır ve bu bir base32 şifreleme türüdür.

Base32 Kriptografi
Base32 Kriptografi

 

Stilim Sensin

Kriptografi

Bu soruda bize aşağıdaki simgeleri içeren bir web sayfası verildi

kripto2
kripto2

Burdaki “/n” yazıları bir alt satıra geçmeyi temsil ediyor, kaynak kodlarından yazıyı alıp her /n işaretinden sonra alt satıra geçersek karşımıza aşağıdaki gibi bir görüntü çıkıyor.

kripto 2 düzenli
kripto 2 düzenli

Flag=./md5(a).php?id=md5(b)

Bu yazıdan bir mantık yürüterekten url’ye yazacağımız metinin “a”DeğerininMd5Değeri.php?id=”b”DeğerininMd5Değeri olduğunu keşfediyoruz yani daha düzgün yazarsak url’miz aşağıdaki gibi oluyor.

192.168.1.1:8080/0cc175b9c0f1b6a831c399e269772661.php?id=92eb5ffee6ae2fec3ad71c777531578f

Bu url’ye girdiğimizde sorunun cevabı karşımıza çıkıyor.

 

Güvenliyim Ben

Mobil

Soruda bizlere bir APK vermektedir. APK dosyasını Jadx ile decompile ettik. Ardından paketleri incelerken com.Example.GuvenliyimBen isimli bir paket dikkatimizi çekti.

Jadx Genel Bakış
Jadx Genel Bakış

Classlar içerisinde dolaşırken bir class içerisinde bulunan onClick fonksiyonunda yapılan String build işlemi dikkatimizi çekti, içerisinde bazı base64 kodları vardı ve onları decode etmeye başladığımızda anlamlı veriler elde ediyorduk.

Jadx Genel Bakış 2
Jadx Genel Bakış 2

Alttaki if koşulundaki kodları sıralı bir şekilde yazdığınızda bir link veriyor bizlere. Bu linki sorunun ana dizinindeki URL’ye yapıştırdığımızda flag’i veriyor bizlere.  Bu kod bloğunu isterseniz StringBuilder ile daha okunaklı bir hale getirebilirsiniz.

Jadx Genel Bakış 3
Jadx Genel Bakış 3

 

/md5d41d8cd98f00b800998ecf8427e.php?id=711a754e6bbee663ead9ddeb991d8ca5

Bizim elde etmemiz gereken link üsttekidir.

 

Resmin İçini Görebilir Misin?

Resmin İçini Görebilir Misin?
Resmin İçini Görebilir Misin?

Soruda çok açık bir şekilde istenileni söylemişti.  Verilen kelimelerin ASCII değerlerini bulup en yüksek olanın 987654’üncü değerini alacağız. Bir python script’i ile bunu çözüme kavuşturduk.

Bizlere verilen kelime listesi SiberYıldız2020 Strings.txt

i = 0
toplam = 0
tempToplam = 0
satirSayisi = 0
hesaplananSatir = 0
kelime = ''
with open("strings.txt","r") as dosya:
   for satir in dosya:
        for c in satir.replace("\n", ""):
            tempToplam += ord(c)
        if toplam < tempToplam:
            toplam = tempToplam
            tempToplam = 0
            kelime = satir
            hesaplananSatir = satirSayisi
        tempToplam = 0
        satirSayisi += 1        
   #print("Hesaplanan değer : ", toplam)
   #print("Hesaplanan Satır : ", hesaplananSatir)
   #print("Hesaplanan Kelime : ", kelime)
   print(pow(toplam, 987654)) 
def pow(s1, s2):
    z = sum(s1 for _ in range(s2))
    return z

 

Telegram kanalımıza katılabilirsiniz, eklememizi istediğiniz herhangi bir soru veya makalede oluşan eksik/hatalı kısımda tartışma kanalından bizimle iletişime geçip bildirebilirsiniz.

Telegram Kanalı: @CyberSec_TR

Yusuf Can Çakır

Selamlar, ben Yusuf Can Çakır. Kütahya Dumlupınar Üniversitesinde bilgisayar mühendisliği okumaktayım. Bu sene İngilizce hazırlık sınıfındayım fakat boş vakitlerimde Incident Response alanında kendimi geliştirmeye çalışmaktayım.

İlgili Makaleler

4 Yorum

  1. “Elektrikler gitti”

    Bu ipucunun sorunun çözümüne en ufak bir katkı sağlamayacağı ortada.

  2. Merrhaba soruları çözdüm ama bir sorum olacak kedili soruda python ile parolayı bulunca ne yapılacaktı ? resimle alakalı bir durum yok mu ?

    1. Aslında fotoğraf son duraktı onu yazmayı unutmuşum. Stego tool’larıyla fotoğrafı incelediğimizde flag’e giden yolu bizlere gösteriyor.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu