HACKKARADENİZ CTF WRITE-UP

Ankara Üniversitesi Siber Güvenlik Topluluğu (AUCC) üyeleri olarak 16.07.2022- 17.07.2022 tarihlerinde katılıp 6. olarak tamamladığımız Hackkaradeniz Yarı Final CTF’inin çözümleri.

AUCC yarışmacıları:

  • canoztas Can ÖZTAŞ Ankara Üniversitesi
  • allesfresser Mücahit KURTLAR Ankara Üniversitesi
  • krypton Yiğit GÜNDOĞDU Ankara Üniversitesi
  • f2u0a0d3v1 Fuad ANZUROV Ankara Üniversitesi

NETWORK

N-T-W-1:

  • HTTP requestlerine bakıldığında dvwa üzerine saldırı yapıldığı gözlemleniyor, örnek bir payloaddan sql injection olduğunu anlıyoruz.

FLAG: Flag{sql_injection}

N-T-W-2:

  • FTP loglarına baktığımızda bir shell dosyası attığını görüyoruz. Dosyanın adı da bBHk1d.php

FLAG: Flag{bBHk1d.php}

N-T-W-3:

  • Trafiği incelediğimizde en anomali durumun 4444 portu ile konuşma olduğunu fark ediyoruz.

FLAG: Flag{172.16.8.50,4444}

WEB

Interview:

  • Domainler şuan kapandığı için screenshot alamıyoruz ve flagi hatırlamıyoruz ama attığımız mailin logları ve mail screenshotu buradadır.
  • Siteyi dolanırken kariyer sayfasında mail atmamız gerektiğini anlıyoruz. Ayşe Zonguldak’ın e-mailini Twitter’da buluyoruz. Maili attığımızda bize kullanıcı-adı parola veriyor.

  • Bu bilgilerle girdiğimiz panelde hatırladığımız kadarıyla md5 ile şifrelenmiş query stringdeki obje referansları vardı, bunu sırayla denediğimizde flag’e ulaşıyoruz.

MISC

Anıt:

  • /robots.txt
  • /canakkale.jpg
  • /img
  • Sitedeki bu endpointleri buluyoruz. robots.txt’den çıkan resim’den bozuk bir resim dosyası buluyoruz. Buradan bitlerini jpg jfife çevirince bu resmi buluyoruz.

  • Görsel bizi anit.php’ye götürüyor. Burada ascii ve hex’li bir şifreleme olduğunu verilen görsellerden ve sitenin yorumlarıdan tahmin ediyoruz ama biz bu pattern’i tam olarak kestiremesek de…

  • …akıllıca bir brute force atarak 302 dönen yeri buluyoruz. Abide kelimesinin Adlhh olduğun bulduğunu buluyoruz.
  • Sonra gelen ekranda 2 fotoğrafın lokasyonu bize soruluyor reverse image search ile birinin Ankara Yenimahalle diğerinin Bursa Osmangazi olduğunu buluyoruz. İlgili yerleri girince flage ulaşıyoruz.

FLAG: Flag{4n1tl4r_t4r1ht1r}

Fernet:

  • fernet
  • Sitede kırmızı ile HackKaradeniz yazılmıştı, buraya gidince Method not Allowed dönüyordu, biz de önce OPTIONS atıyoruz.

  • response’da post atıldığını söylüyor, post atınca bize bir key ve ciphertext dönüyor.

  • Sitenin domainin de adından bunun fernet encryption olduğunu anlıyoruz.

FLAG: FLAG{H4cK_kar4D3n1z_2o22-T3mMuz}

MALWARE

Forrest Gump:

  • Verilen unity ile yapılmış programı dnSpy ile HKGame_data>Managed>Assemly-CSharp.dll ile açtığımızda UnityMovement classının içinde DetectTouchingObject fonksiyonun oyunun amacına göre flagı vereceğini düşündük.

  • Kodu kendimiz çalıştırdığımızda flagı elde ettik.

FLAG: FLAG{F1N4L3_DOGRU_4D1M_4D1M}

windows.exe:

  • Verilen exe dosyasına VIRUSTOTAL‘a attık VIRUSTOTAL ile dosyayı tarattığımızda içinde farklı dosyaların olduğunu tespit ettik.

  • DirWatch toolu ile incelediğimiz de config.json dosyası olduğunu fark ettik. config.json dosyasının incelediğimizde base64 formatında decode ettiğimizde flag karşımıza çıktı.

[{"Algo":"","Coin":"","URL":"pool.hashvault.pro:80","User":"46zddr14XunCANLoynmVXxSFZi15Af3qycbEPoH72qrS6dSFHdavYnHb29zTNXqqRHAFBMmWxW5QuKvfYdAQ5SU3GqqRfEA","Pass":"RmxhZ3sweDQ2NkM2MTY3N0I2ODY1NzI3MzY1Nzk3NjM0NzQ2MTZFMzE2MzY5NkU3RH0=","RigID":1,"NiceHash":false,"KeepAlive":false,"Enabled":true,"TLS":false,"TLSFingerprint":"","Daemon":false,"Socks5":"","SelfSelect":"","SubmitToOrigin":false}],"PrintTime":0,"HealthPrintTime":0,"DMI":false,"Retries":0,"RetryPause":0,"Syslog":false,"tls":{"Enabled":false,"Protocols":"","Cert":"","CertKey":"","Ciphers":"","CipherSuites":"","Dhparam":""},"dns":{"IPv6":false,"TTL":0},"UserAgent":"","Verbose":0,"Watch":false,"PauseOnBattery":false,"PauseOnActive":false}
  • Pass key’ine bakarsak:
"Pass":"RmxhZ3sweDQ2NkM2MTY3N0I2ODY1NzI3MzY1Nzk3NjM0NzQ2MTZFMzE2MzY5NkU3RH0="
  • base64 decode edersek:

Flag{0x466C61677B686572736579763474616E3163696E7D}

FLAG: Flag{herseyv4tan1cin}

FunctionBomber:

  • ELF dosyasını ida ve ghidra ile incelediğimizde CreateFlag fonksiyonlarından 99999 tane olduğunu görüyoruz. Bu fonksiyonlardan sahte olanların yalnızca return 1 olduğunu. Doğru fonksiyonu bulabilmek için objdump -d ile fonksiyonlara ait bilgileri çektik. Yazdığımız python scripti ile fonksiyonların assemble kod kısımlarında 3.satırında mov eax,1 olmayan fonksiyonu bulduk.

  • çıktısı:

  • Belirlediğimiz fonksiyonun assemble koduna baktık.Daha sonrasında gdb asıl main kısmının return addresine breakpoint koyarak rip ye bu fonksiyonun adresini koyduk ve fonksiyonu çalıştırdık.Her aşamada rspyi kontrol ettik ve sonucunda SEt7QzR5ZWxpbmRlbl9PdGV5ZTUzfQ elde ettik. Cybershef de magic modda cipherı verdiğimizde flagı elde etmiş olduk.

FLAG: HK{C4yelinden_Oteye53}

Hesap Makinesi:

  • Verilen elf dosyasının go ile yazılmış olduğunu ve upx ile packlendiğini fark ettik.

  • upx -d ile unpack ettikten sonra file ida’da açtık. main kısımlarından main_meh kısmında gizli bölme olduğunu gördük.

  • Kodun ilerleyen kısımlarında password sorduğunu ve gördük. Password kısmına geçtikten sonra ise encode edilmiş datanın 3 kere base64 formatında decode edildiğini fark ettik.

  • Sonrasında flag’i elde ediyoruz.

Flag{0x466C61677B68617934747434656E68616B696B696D7572736974696C696D6469727D}

FLAG: Flag{hay4tt4enhakikimursitilimdir}

Mixer:

  • Verilen exe dosyasını ida ile açtığımızda flage ulaşabilmek için strcmp yapıyor ancak strcmpin öncesinde bir swap işlemi yapıyor. Ayrıca swap işlemi girilen inputu ortadan ayırıp ters çeviriyor. Karşılaştırma yaptığımız değeri bu swap algoritmasına göre düzenleyip exe dosyasında çalıştırdığımızda bize flagi elde ediyoruz.

FLAG: Flag{H3y6!D!_K4R4D3N!2}

RansomWare:

  • Verilen exe dosyasını ida ile açtığımızda encode edilmiş partı keşfettik.

  • Encode edilmiş partta tam tersini yapacak bir script yazdık.

  • Daha sonrasında flagi elde etmiş olduk.

FLAG: Flag{K4r4d3n!zD3_Ru264r_S3RT_3s3R}

Klasik:

  • Verilen exe dosyasını çalıştırdığımızda direkt olarak flag karşımıza çıkıyor :)

Flag{0x466C61677B6D696C347474616E6F6E63653230397D}

FLAG: Flag{mil4ttanonce209}

Dünya Dönüyor:

  • Öncelikle verilen dosyayı ida ile açtığımızda sub_C81320 fonksiyonunun return değeri 1 olacak şekilde patchledik.

  • Sonra kodun bu kısmını eşit değilden eşit olacak şekilde pathcleyip her compare edildiğinde edx valuesunu yazdıracak şekilde conditional breakpoint koyduk.

  • Daha sonrasında inputu orjinal exeye girince flagi elde ettik.

FLAG: HK{Z0n6uLD4K_y0Lcu5u_K4LM4S1N}

ASM:

  • Verilen asm kodunu .s uzantısı ile kaydettikten sonra g++ ile derledik.Daha sonra ida ile açtığımızda okunabilir koda ulaştık.

  • Encode function:

  • Burda des arrayini ida’da hex kısmından çekip düzenledik ve bu algoritmaya göre her karakter için brute-force yapacak scripti yazarak flagi elde ettik.

FLAG: HK{Karadenizin_bir_havasi_bir_yaylasi123}

Deep:

  • Verilen file ida’da açtığımızda ilk başta kodun bu kısmını bakarak yaptık ancak yanlış flag geldiği için diğer fonksiyonlara baktık.printf‘in ayrı implementasyonunu olduğunu gördük ve baktığımızda bir şeyi decode ettiğini fark ettik ve bunu python‘da kodunu yazdık.

  • Register olarak 8-bit register kullandığından burada rotate rightada oluşabilecek maksimum kombinasyon 8 olmalıydı. Bunu da ekleyince base64 formatında değer geldi.

FLAG: HK{K4r4den1z1n_S1ber_Y1ld1zlar1}

OSINT

GEOINT:

  • Görseldeki kapının alt kısmındaki afişe dikkatlice baktığımızd unterschriften sammelstelle yazdığını görebiliriz.

  • Bu kelimeleri Google Images üzerinden arattığımızda karşımıza aşağıdaki gibi bir sonuç çıkıyor.

  • Benzer afişli sonucun kaynağının Aachen merkezli bir bisikletçi aktivist topluluğu olduğunu görüyoruz.

  • Buradan yola çıkarak Aachen’deki restoranları arıyoruz…

  • …ve konumun Macaroni olduğunu öğreniyoruz.

  • Sonrasında restoranın web sitesi üzerinde iletişim kanallarında bir mail adresi olduğunu görüyoruz.

  • Mail adresine ilişkin bir leak olup olmadığına baktığımızda ise 123rf üyeliğinin expose olduğunu öğreniyoruz.

  • Bu web sitesindeki habere göre sızan kullanıcı bilgileri arasında parola hash’lerinin de olduğunu öğreniyoruz.

  • Bu leak sitesinde mail adresini girğimizde ise aşağıdaki gibi bir sonuç karşımıza çıkmakta

FLAG: Flag{d26fd6a8b28f2c2b3f2cdc3ac1c9d52bb41ca4ce}

BlackOnBlack:

  • Soru dahilinde verilen siyah görseli aperi web sitesine upload ettiğimizde çıkan sonuçlardan biri aşağıdaki gibi oluyor.

  • Okunabilirliği arttırmak adına Gimp üzerinden renk kanalları üzerinden kurcalama yaptıktan sonra aşağıdaki gibi bir görsel elde ettik.

OBQXG4Z2MU2HG6LQGRZXG5ZQOJSA====
  • base64 ile encode edilmiş gibi görünüyor fakat anlamlı bir sonuç çıkmıyor. Base32 ile denediğimizde ise aşağıdaki gibi clean texti elde ediyoruz
pass: e4syp4ssw0rd
  • Password çıktığına göre muhtemelen görselde steghide ile bir dosya saklanmış durumda. Denediğimizde ise haklı olduğumuzu görüyoruz.

  • Text dosyası içinde bahsi geçen BSSID’yi Wigle üzerinden arıyoruz ve flag’i buluyoruz.

FLAG: Flag{bl4ck_ch405}

Rotasını Şaşıran Tır - 1:

  • Soruda geçen +d0qbfGAndK82YmU0 hash analiz eden programlarca tanınamadı ve pastebin vb. sitelerde directory olarak çıkmadı. Fakat sonuç olarak Telegram invite linki olarak deneyince…

FLAG: Flag{M4sm4vi_K4r4d3niz4_H0sg3ldin}


Mücahit KURTLAR Yiğit GÜNDOĞDU Can ÖZTAŞ Fuad ANZUROV