Hackmetu 2015 Hakkında

16 Şubat 2015 Pazartesi

14-15 Şubat tarihlerinde ben(Yasir), Ahmet ve Murat, Turksec olarak Hackmetuya katıldık. Bu yazıda 36 takımın katıldığı Hackmetu offline ctf den bahsedeceğim.

Ahmet dedi ki:

Hackmetu, IEEE ODTÜ ve ODTÜ Bilgisayar Muhendisligi tarafından hazırlanan bir offline ctf yarışması. Öncelikle Hackmetu ekibine teşekkür etmek istiyoruz. Bütün yarışmacılara tüm yarışma boyunca güzel yaklaşımlarıyla yardımcı olmaya çalıştılar. Bu gibi etkinliklerde altyapı önemli bir konu. Çünkü altyapının kötü olması yarışmacı hem fiziksel hem psikolojik olarak etkiliyor. Şöyle ki, yarışmada bir soru hakkında bilginiz yok. Araştırmaya başlıyorsunuz internetiniz gidiyor. Ya da daha önemli bir açıdan bakalım. Bonus puan... Soruyu çözdünüz ilk çözen takıma X puanı geliyor. Soruyu çözdünüz. Ama sisteme giremiyorsunuz... Sizden 1 dakika sonra soruyu çözen bir takım girdi. Belkide o 'X' puan yüzünden yarışmayı kaybedeceksiniz. (Böyle bir olay olmadı, sadece örnektir) Bu örneği sistemlerde alt yapının ne kadar önemli olduğunu vurgulamak için verdim. Yarışma başladıktan sonra ilk 4-5 saat internetin sürekli gidip gelmesi bütün takımlar için handikap oldu. Kim daha fazla etkilendi kim etkilenmedi tartışılır. Gelelim sorulara... Soruların geneli seviye belirleyici sorulardı. Soruları çözmek için yazılım bilgisi ise kesinlikle gerekliydi. Yarışmada 22 soru mevcuttu. Soru kategorileri crypt, web , Reverse Engineering ve Pwnable'dan oluşuyordu. Elimizden geldiğince soruları çözmeye çalıştık. Yarışmanın bitimine 5-6 saat kala soruları çözemeyince açıkcası sıkılarak bıraktık. Güzel bir tecrübe oldu. Eğlenceliydi... Bu yarışmanın bizim hayatımızda çok önemli bir noktası var. Artık "TURKSEC" olarak yeni kararlar aldık. Büyük bir yapılanmaya gitme kararı. Artık "TURKSEC" ismini daha yukarılara her alanda taşıyacağız. Yakında bu konu hakkında da bir yazımız olacak. Yukarıda belirlediğim gibi yazımı tekrardan bütün yarışmacıları ve Hackmetu ekibini tebrik ederek sonlandırıyorum. Yarışmayı sonuna kadar kazanmayı hak eden 0-Day takımını özellikle tebrik ederim. Sonuna kadar hak ettiler. Hackmetu ve ODTÜ'nin diğer üniversite, devlet kurumları ve platformlara örnek olarak bu gibi yarışmaların çoğalması dileğiyle...

--------------------------------------------------------------------------------------------------------------------------

Yasir dedi ki:

Yarışma 14 Şubat 11 civarı başladı ve 15 şubat 16.30 da bitti. Burada verilmek istenen mesaj, "bilgisayarcının sevgililer günü ile işi olamaz" :D

Yarışma ortam olarak fena değildi ama oturak ve masa bakımından sıkıntılıydı. Plastik sandalyeler hem adamı yoruyordu hem de sık sık laptoplarımız tarafından çarpılıyorduk. Tabi bunlar üniversitenin ayıbı, düzenleyenlere en ufak bi sözümüz yok.

Yeme içme bakımından her şey on numaraydı. Cidden yarışmanın hiçbir dakikasında aç kalmadık. Her daim elimizin altında da çay kahve mevcuttu. Hatta 30 saat uyumadığımız için bi ara gece 1 e doğru "acaba" dedik "gece aç mıyız", derken bi baktık kapıdan pizzalar geliyor :D pizza bile söylemişler yani o derece.

Yarışmada en büyük sıkıntım internetti. 30 saat içinden toplam internetim olan süre 5 saati geçmemiştir. Ahmetle Murat'ta da çok kesinti oldu ama benimki biraz başkaydı, ethernettenmidir nedir. Yaşadığım en büyük sıkıntı buydu esasında. Bilsem evden kasardım.

Yarışma soru sayısı olarak şöyleydi;
  • 7 kripto(bi tanesi daha çok reverse, 2 tanesi programlama algoritma bilgisi)
  • 5 web(bi tanesi daha çok kripto)
  • 6 reverse(tamamı reverse :D)
  • 4 pwnable(yine tamamı reverse :D)

Şimdi gelelim sorulara. Sorular genel olarak uğraştırıcı ve düşündürücüydü. Bazıları da düşünmekten çok denemeye yönelikti. Ama genelde zordu. Sorularda bug yoktu derdim ama 2 soruda bug olduğundan eminim, ki bi tanesini doğruladılar zaten.

Web500 sorusu açıldığında kodu 15 dakika inceledik ve soruyu çözdük, soruda adminle giriş yapmak için "admin                                   a" tarzı bi username ile register olduk ve mysql de username kolonunda taşmadan dolayı veritabanına "admin" olarak kullanıcımız eklenmiş oldu. Şimdi burada biz denemelerde şifremize idarelik "123", "12345" tarzı şeyler yazmıştık. Burada yarışma içerisinde ve yarışma bitince yaptıkları açıklamadan anladım ki, bizim oluşturup flagi okuduğumuz kullanıcı, normalde silinmesi gerekirken silinmemiş. Silinmesi gerektiğini koddan anlamıştık halbuki. Yani bizim normal çözümle bulduğumuz flag'i, "admin, 12345" yazarak bulanlar olmuş. Bu olay yarışmayı hazırlayanlara haklı olarak en çok kızdığım olaydı.

Web400 sorusunda ise Xpath injection mevcut olması gerekiyordu fakat tırnak işareti (" ' ") engelliydi. Injection konusunda binlerce sitelik tecrübesi olan biri olduğum için gönül rahatlığıyla konuşabilirim. Burada eğer tırnak işareti çalışmıyorsa ve içinde tırnak işareti geçen her postta "custom" bir hata mesajı veriyorsa, burada injection yapılmaz. Çünkü burada hata mesajı tırnak işaretinin syntaxı bozmasından dolayı değil, sadece metnin içinde tırnak işareti geçtiği için alınmaktadır. Çünkü tırnak işareti içeren syntaxı bozmayan mantıksal sorgularda ve escape edilmiş tırnak işaretinde de aynı hata mesajı alınmaktaydı. Yarışma sonunda çözüm anlatılırken kodu incelediğimde herhangi bi tırnak işareti filtresi ve aldığımız hata mesajını göremedim. Ayrıca çözüm olarak gösterilen sorgu da bu filtre mevcutken çalışmaz. Eğer çalışıyorsa tek bi şekilde mümkündür, bir if'le eğer sorgu böyleyse izin ver demeleri gerekir. Eğer bunu yaptılarsa da, bu soru injection sorusu değil, string tahmin sorusudur.

Yarışmayı hazırlayanlara tek kızdığım noktalar bunlardı, eğer okuyorlarsa, gerekli açıklamayı gönderirlerse sevinirim. Neyse konumuza dönelim..

Sorular biraz ilgi alanımız dışındaydı, özellikle debug gerektiren sorular. Aslında debug ve asm bilgimiz vardı fakat windows için. Linuxte hiç tecrübemiz yoktu, bu sebeple 2 kategoride hiç cevabımız yoktu. Doğru düzgün debugger bulsak bi şekilde gene hallederdik de bulduklarımızı kullanamadık bile. Ama tabi ki yarışmayı düzenleyen arkadaşlara bir lafımız yok, istedikleri ağırlıkta sorabilirler. Bilmemek bizim ayıbımızdı. Gözümle de şahit oldum ki hazırlayanlar çok ciddi emek harcadılar, hem yarışmada, hem yarışma öncesinde.

Alınan ders; Anladık ki eğer legal takılacaksak, bundan sonra bilgisayarla ilgili her şey ilgi alanımız olmalı.
Özet; bu kadar cevapsız soruyla gene iyi 4. olduk, en kötü günümüz böyle olsun, kasmaya devam.

--------------------------------------------------------------------------------------------------------------------------

Ömer Çıtak dedi ki:

Ben Balıkesir'deki işlerimden dolayı yarışmaya sadece 2. gün katılabildim. Zaten resmiyette ekipler 3 kişi olabildiğinden kaydım yoktu. Zaten yarışmadım da bi köşede tek takıldım. Ben gelene kadar dostlarım zaten web sorularını halletmiştiler. geriye reverse, pwnable ve kriptodan birkaç soru kalmıştı. Hiçbirimizin reverse ve bof üzerine yoğunlaşmışlığı olmadığından ters köşe oldu. 2-3 sağlam ekip vardı. Bildikleri ve sürekli çabaladıkları aşikardı ki zaten ödüllerini de aldılar. Bu ctf biraz daha dar kapsamlı olduğundan ve o dar kapsam bizim en zayıf noktamız olduğundan istediğimizi elde edemedik. dana önümüzde çok ctf var, nema problema ;)

--------------------------------------------------------------------------------------------------------------------------

Murat dedi ki

Yasir'in  "bilgisayarcının sevgililer günü ile işi olamaz" dediğine katılmamak elde değil zaten bunu taa ne zamandan konuşup dalga geçmiştik ama tarih bile bile mi seçilmiş yoksa tamamen tesadüf mü orasını bilemiyorum :P tamam bilgisayarcıyız hek mek bir şeylerle uğraşıyoruz fakat bu kadarda dibe vurulmaz :P

Gelelim yarışmaya;
Yukarıda da okuduğunuz gibi yarışmanın soru kategorileri belliydi fakat benim kafamı karıştıran Pwnable kısmıydı çünkü benim bildiğim pwnable'larda bir sistem verilir ve katılımcılardan sistemin ele geçirilmesi istenir aşamalar farklıdır yani tamamen bir yazılımı kırmak üzerine değildir bu konuda biraz ters köşe oldu(m)k . Yarışma esnasında altyapı sorunları ve sandalyeler + "elektrik çarpmaları" haricinde sıkıntı yoktu (elektrik çarpmalarını tırnak içinde yazdım çünkü benim gibi elleriniz terliyorsa ne demek istediğimi anlamışsınızdır :D). Hatta bu çarpmalar yüzünden bir ara acayip bir yanık kokusu tüm ortamı kapladı. Aşamaların bazılarında sıkıntı vardı (yada bana öyle geliyor) bazılarında çözüme çok yaklaşmamıza rağmen ufak tefek şeylerle kaçırdıklarımız oldu. Reversing ve Pwnable kategorileri bizi çok zorladı hele birde reversing hakkında fazla bilgi olmayınca, internet de sıkıntılı olunca insanın ister istemez hevesi kırılıyor.
Yarışma sorularından ziyade bize gerçekten çok iyi bakıldı gerek yemek servisleri, gerek ikramlar çok güzeldi. Hatta "ben kendime böyle bakmıyorum" diyebilirim :D.
Sonuç olarak HackMetu bizim için gerçekten çok iyi bir tecrübe oldu. Özellikle reverse konusundaki eksik bilgilerimizin ne kadar fazla olduğunu öğrendik ve bu eksikliği gidermemiz gerektiğini farkettik.
0-Day, tesLa ve MAL takımlarını tebrik ederim bizim tabirimizle gerçekten fena kastılar ve hakederek ilk 3e girdiler.

Yarışmayı düzenleyen ekibede buradan teşekkürlerimi iletiyorum. Dilerim bu tarz organizasyonlar dahada artar.

--------------------------------------------------------------------------------------------------------------------------

Sonuç olarak yarışma bitti, daha kötü sonuç bekliyorduk ama 4. olmuşuz, buna da şükür. İlk 3'ü tebrik ederiz. Özellikle bu tip konularda uzmanlığı olmayan, bilgisayar merakından dolayı gelmiş takımlar da vardı, onları da cesaretlerinden dolayı tebrik ederiz.

Ha bi de ctf avcısı, yarışmayı hazırlayan 0xdeffbeef ekibini tebrik ederiz, ellerine sağlık. Standartların üzerinde bir yarışma hazırlamışlar gerçekten.

Murat gönderince onun yazısını da koyarım.

Bu da puan tablosu:



Share this article :

7 yorum:

  1. Hackmetu da eksikliklerinizi görmeniz iyi olmus farkı kapatırsınız umarım.Sorulara nereden ulaşabilirim?

    YanıtlaSil
  2. @Sertan Bilir;
    Sorulara
    https://github.com/kadircet/HackMETU-15 buradan ulaşabilirsin

    YanıtlaSil
  3. kadir cetinkaya20 Şubat 2015 04:46

    Selam Yasir, web400 sorusunda nasil bir sikintidan bahsediyorsun bilmiyorum ama detaylarini konusmak isterim :)

    Sorudaki amac suydu, eger verdiginiz input syntaxi bozan bir inputsa veya syntaxi dogru olan ve databaseden(xml) sonuc cekebilen bir input ise
    I guess u r trying to hackmetu o_O...
    seklinde bir hata mesaji, eger verdiginiz input syntaxi bozmuyor ancak databasedeki herhangi bir kayit ile eslesmiyorsa da
    Wrong credentials
    hatasi almaniz gerekiyordu, ve dogru kullanici adi ve sifre ile giris yaptiysaniz(injection ile degil direk kullanici adi ve sifre ile) flag'i almaniz gerekiyordu az once soruyu tekrar kontrol ettim bu sekilde calisiyor.
    Eger local'de deniyorsaniz warningleri goruyor olmaniz da muhtemel yarisma esnasinda devre disi olduklarini belirtmek isterim yeniden.
    Kullanidigim queryler de direk su sekilde:
    oncelikle kullanici adi icin
    ' or substring(/users/user/uname/text(),1,1)='a
    seklinde yaparak ilk karakteri tutturana kadar yani are u trying to hackmetu mesajini alana kadar a karakterini degistiriyorum ve bu esnada sifrenin sikinti olusturmamasi icin sifre alanina da direk
    ' or '1' = '1
    querysini veriyorum, kullanici adini tamamen elde ettikten sonra ayni islemleri sifre icin yapip kullanici adi ve sifreyi ele geciriyorum.

    Eger yanlis anladiysam dediklerinizi lutfen duzeltin :)
    Yarisma hakkindaki dusuncelerinizi paylastiginiz icin yeniden cok tesekkurler umarim bolca eglenmissinizdir.

    YanıtlaSil
    Yanıtlar
    1. yarışmada 'and'1'='1 veya 'or'1'='1 ve bunların türevleri('and'1'<'2 , ')and(1'='1 vb..), veya " '' "(iki tane tek tırnak, yani sorguda escape edilmiş tek tırnak) girildiğinde de "I guess u r trying to hackmetu o_O" hatası alıyorduk. hatta ben başta ipucu yokken de xpath testleri yaptım ama bu hata mesajı öyle bişeydi ki strpos ta geçiyosa direk basıyo gibi geliyordu insana çünkü syntaxı bozmadan tamamlayacak her şeyi denedim ona rağmen içinde tırnak işareti geçen her girdide bu hatayı aldım.

      Sil
    2. Evet dogru diyorsunuz o konuda dedigim gibi syntaxi saglamayan bir girdi veya saglayan ama sonuc alabilen bir girdi verdiginizde bunlari aliyordunuz, ayirt etmesi zorluydu o acidan biraz.

      Sil
  4. Yarışma gayet güzeldi özellikle turksec grubu adamsınız :)

    YanıtlaSil
    Yanıtlar
    1. eyvallah kardeşim sizlerle güzeldi ;)

      Sil

 
Support : Copyright © 2014. Diary of Injector - All Rights Reserved