HackKaradeniz Write-up
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 payloaddansql 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. Buradaascii
vehex
’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 kelimesininAdlhh
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.
- class cryptography.fernet.Fernet(key)
python
kullanarak flag’i buluyoruz.
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ızdaUnityMovement
classının içindeDetectTouchingObject
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 deconfig.json
dosyası olduğunu fark ettik.config.json
dosyasının incelediğimizdebase64
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
veghidra
ile incelediğimizdeCreateFlag
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çinobjdump -d
ile fonksiyonlara ait bilgileri çektik. Yazdığımızpython
scripti ile fonksiyonlarınassemble
kod kısımlarında 3.satırındamov eax,1
olmayan fonksiyonu bulduk.
- çıktısı:
- Belirlediğimiz fonksiyonun
assemble
koduna baktık.Daha sonrasındagdb
asılmain
kısmınınreturn
addresine breakpoint koyarak rip ye bu fonksiyonun adresini koyduk ve fonksiyonu çalıştırdık.Her aşamada rspyi kontrol ettik ve sonucundaSEt7QzR5ZWxpbmRlbl9PdGV5ZTUzfQ
elde ettik.Cybershef
de magic modda cipherı verdiğimizde flagı elde etmiş olduk.
FLAG: HK{C4yelinden_Oteye53}
Hesap Makinesi:
- Verilen
elf
dosyasınıngo
ile yazılmış olduğunu veupx
ile packlendiğini fark ettik.
upx -d
ile unpack ettikten sonra fileida
’da açtık.main
kısımlarındanmain_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çinstrcmp
yapıyor ancakstrcmp
in öncesinde birswap
işlemi yapıyor. Ayrıcaswap
işlemi girilen inputu ortadan ayırıp ters çeviriyor. Karşılaştırma yaptığımız değeri buswap
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
fonksiyonununreturn
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 sonrag++
ile derledik.Daha sonraida
ile açtığımızda okunabilir koda ulaştık.
- Encode function:
- Burda
des
arrayiniida
’dahex
kısmından çekip düzenledik ve bu algoritmaya göre her karakter içinbrute-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 bunupython
‘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