Adeo IWS, CTF Çözümleri Part-1

11 Nisan'da gerçekleşen Adeo Intern & Work @ Security etkinliğinin uygulamalı sınavının çözümlerini yayınlayacağım. Başlamadan önce sınav ile ilgili birkaç bilgi vermek istiyorum. Sınav Capture The Flag (ctf) tarzı bir konsepte sahipti ve toplamda 8 sorudan oluşuyordu. Web, Exploit, Crypto, Reverse, Binary, Misc ve Stego olmak üzere 7 kategori vardı. Unutmadan, bu sınavda mülakata hak kazanan diğer arkadaşları da buradan tebrik etmek istiyorum.

Sınavın saat 19:00 civarı başlaması ile beraber burada elektriklerin kesilmesi (Buca, Tınaztepe tarafları) sebebiyle sınava yarım saat kadar geç başlamak durumunda kaldım. Ancak bu bana engel olmadı :)

Sorulara geçelim..

Web400
Sınavın belirleyici sorularından olduğunu düşündüğüm bu soruda bir txt dosyası verilmiş:
Verilen adrese gidince karşıma resimdeki login paneli çıktı.

Birkaç hatalı giriş ve SQLi denemesi sonucunda login panelinden bir şey çıkmayacağını anlayınca bana verilen bilgiler ile giriş yaptım ve resimdeki sayfa ile karşılaştım.
Sayfa göründüğü kadarıyla GET/POST ile kullanıcıdan veri almıyordu. Buna rağmen sayfa yenilendiğinde kullanıcı adı/şifre bilgileri hala sayfada gözüküyordu. Buradan anlaşıldığı üzere sayfamız cookie kullanmakta.
Bunun üzerine Tamper data ile sunucuya giden cookie verisine baktım..
__cfduid=d9a485b03d13f26c52d7b863df55d85111427057579; __utma=35270385.1616841493.1427064777.1428860390.1429438692.6; __utmz=35270385.1428684856.4.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _ga=GA1.3.1616841493.1427064777; token=YWRlbw%3D%3D
Kırmızı ile işaretlediğim parametre dikkatimi çekti. İlk başta ne olduğunu anlamakta biraz zorlandım ama url decode edince bunun base64 ile encode edilmiş bir text olduğunu gördüm. Base64 ile decode edince de bu verinin adeo yani kullanıcı adımız olduğunu gördüm.

Yani sayfamız arka tarafta bizden aldığı cookie değerini base64 ile decode ettikten sonra çıkan kullanıcı adını veri tabanında sorgulatıyor, ve şifresiyle birlikte sayfaya yazdırıyordu. Bunun üzerine hemen adeo' verisini encode edip cookie vasıtasıyla sunucuya gönderdim.
Font renginin siyah olması sebebiyle sayfa boş gözüküyordu, Ctrl+a yapıp sayfada ki SQL Syntax hatasını görebilirdiniz.
Injection türü klasik Union based idi. Yazıyı daha fazla uzatmamak için direkt exploit'i veriyorum.

asdasf') UNION SELECT 1,database(),3 ; -- +  
Bu sorguyu Base64 ve URL encode ederek cookie'deki token parametresiyle gönderip flag'e ulaşıyorsunuz.


Exploit300
Yine güzel bir soru olan ikinci sorumuzda bize bir rar dosyası ve şifresi verilmiş.
Dosyayı indirip unrar ile açtığımda içinden 0.zip adlı bir dosya çıkıyor. Onu da açtığımda 1.zip, onu açınca 2.zip ... diye gidiyor. 30'lu sayılara geldiğimde bu iş böyle olmayacak diyip kolları sıvadım ve bir bash scripti yazmaya karar verdim.
for i in {0..50000}; do unzip $i.zip; done
 29 bin civarlarında zip dosyası birden 40 binlere atlıyor o yüzden komut hata vermeye başlıyor. Hatayı gördüğünüz an komutu ctrl+c vasıtasıyla durdurup range'i ayarlayıp kaldığı yerden devam ederseniz 50 bin civarlarında zip dosyasından bir txt dosyası çıkıyor ve flag'e ulaşıyorsunuz.

Misc200
Bu sorumuzda ise bize aşağıdaki resim dosyası verilmiş:
Bu resmi herhangi bir online QR Code okuyucu ile tarattığımızda
flag:MTA5IDExMSAxMDQgMTE1IDEwMSAxMTAgMDk1IDExMCAwOTcgMTA5IDEwNiAxMTE=
değeri ile karşılaşıyoruz. Verilen bu değeri base64 decode ettiğimizde ise
109 111 104 115 101 110 095 110 097 109 106 111
sonucunu veriyor bize. Bu sayıları da herhangi bir Decimal to Ascii çevirici ile çevirerek flag'e ulaşabiliyoruz.

Yorumlar

Bu blogdaki popüler yayınlar

DKHOS - Rev300 Çözümü

Part 1: Tersinden Tersine Mühendisliğe Giriş

Bir Güvenlikçi, Virüs ile Karşılaşırsa