"Enter"a basıp içeriğe geçin

Siber Yıldız (CTF 2017) Soru Çözümleri

Merhaba,
Daha önce katıldığım ve derece elde ettiğim Dünyayı Kurtaran Hacker CTF yarışmasının soru çözümlerini sizlere paylaşmıştım. 5 sene aradan sonra tekrar bir CTF Soru Çözümü ile karşınızdayım. BTK’nın düzenlediği Türkiye’nin Siber Yıldızları Soruların Çözümlerini Anlatacağım.

Diğer yazımda da belirttiğim üzere amacımın kendimi test etmek olduğunu belirtmek isterim.

Soru 1 – İyi Bak.

Soruya tıkladığımızda karşımıza sibernetik bir göz resmi çıkıyordu ve “Daha Yakından Bakmalısın” ibaresi vardı. tabiki ilk soru olduğu için basit düşünüp resmi indirdikten sonra exif’ine baktım, hiç birşey yoktu, resmi yakınlaştırıp bayrak aradım. fakat orada da birşey yoktu. resmi ’den arattım, bir çok sonuç çıktı fakat yinede bir sonuç elde edemedim. bu yüzden bu soruyu geçip diğer sorulara bakmıştım, fakat sonra soruya döndüğümde açılan resim sayfasının header’ında cevabın gizli olduğunu gördüm. 3. yaptığım soruydu fakat bakmam gereken yer için bir ipucu olmamasına şaşırdım. “Daha Yakından Bakmalısın” değilde “Daha dikkatli Bakmalısın” gibi bir ipucu daha yerinde olabilirdi.

 

Soru 2 – Bakalım Ne Kadar İyisin? (Yapamadım!)

Soruyu açtığımızda bir giriş formu vardı ve bir ip ucu vardı.

“Not: bu sayfada işlem yapmak yasaktır. Yonetici.”

tabi ilk denecek basit şifrelerdi çünkü kullanıcı adı ipucunda verilmişti. Fakat bir türlü olmadı, tabiki ikinci denenecek şey ise sql injection yöntemiydi ve tam isabetti. basit bi şekilde  1′ or ‘1’=’1 yazdığımızda karşımızda “Giris yaptin.” diyordu fakat yinede cevap bu değildi. Peki başka ne olabilirdi?

Soru 3 – Yetkili bir kullanıcı ile giriş yapman lazım.

ilk yaptığım soruydu, karşımızda bir websitesi bir “login formu” bir “bilgiler” sayfası ve bir adet “çıkış yap” linki vardı diğerleri çalışmıyordu. Bilgiler sayfasında bize “yetkili bir abi” lazım diyordu 🙂 Peki neden diğerleri çalışmıyorda “Çıkış Yap” çalışıyordu? “Session” da birşeyler olacağının ipucusuydu bu 🙂 login’e yine basit şifreler sql injection vs denedim ama yemedi. ipucu yu değerlendirmek üzere çerezlere baktım. “isAdmin” çerezi oluşuyor ve “Çıkış Yap” tıklanınca siliniyor yanlış şifre girince ise isAdmin’in değeri “cfcd208495d565ef66e7dff9f98764da”. Hmm md5 formatına benziyor diyip online sitelerden eşleşme olup olmadığına baktım. eşleşme sonucu “0” idi 🙂 yani isAdmin=0(sıfır-false) yani admin değiliz. E o zaman çerezi 1 ile değiştirelim dedim. 1 sayısını(bir-true) md5 hashını alıp “c4ca4238a0b923820dcc509a6f75849b” çerezi düzenlediğimizde ve sayfayı yenilediğimizde “Zaten giriş yaptın” diyordu 🙂 ee birde Bilgiler sayfasına girelim bakalım dedim ve cevap karşıdaydı. 🙂

 

Soru 4 – Şimdi de uygulamanın kullandığı veritabanı parolası lazım

Tıklıyoruz ama 404 not found. :/ Başlangıçta bir hata zannettim (çünkü gece saatleri olmasına rağmen ddos yüzünden soruları görmekte bile zorlanıyorduk) fakat sonra fark ettim ki bu 404 sayfası gerçek bir 404 sayfası değil. 🙂 çünkü diğer 3 soruda da nginx kullanıyordu fakat bu sefer bize apache 404 sayfası döndürmüştü. emin olmak için “gerçekten” olmayan sayfaya gittim ve bu sefer nginx 404 sayfası döndürdü. tekrar soruya tıkladığımda header’a baktığımda “status code: 200 OK” cevabı verdiğini gördüm. yani fake atmışlardı bize 🙂 kaynak koduna baktığımızda birşey yoktu fakat yine dikkatli olmak lazımdı çünkü kaydırma çubuğu bize aşağıda birşeylerin olduğunu söylüyordu :)aşağı indiğimizde bir login formu vardı. “önceki 2” soruda da denediğim şeyleri sırasıyla denedim. “admin:admin” ilk denediğim şey idi ve direkt beni “sanayi” ismiyle başlayan klasöre attı. ve burada bir script vardı. belli ki veritabanı kullanılıyordu(öyle bir görüntü vardı) ve soruda zaten buydu. 🙂 linkleri gezdiğimde url’de ?file= querystringi vardı ve dosyaları include ediyordu. gerçek hayatta bariz “remote file injection” yiyen bir sistem olur ama bu tür ctf’lerde kontrol olduğu için “rfi” tercih edilmezdi. başka bir linke tıkladığımızda php dosyayı include edemiyor ve edemediği “dosyanın yolunu” veriyordu. “inc/pages/dosya.php” tarzı birşey 🙂 include klasörü ilgimi çekti peki “rfi” değilde “lfi” yapsak dedim kendime 🙂 peki hangi dosyayı? veritabanı diyince akla ilk config.php, ayar.php db.php vt.php baglanti.php gibi isimler gelir. tek tek denemeye başladım fakat bu tür dosyaların pages/ klasöründe değil inc/ klasöründe olduğu kesindi. ../config.php yemedi ../ayar.php yemedi fakar ../db.php yazdığımızda cevap karşımıza çıkmıştı 🙂

 

Soru 5 – Parolayı bul ve bize gönder !

sayfada yine bir login formu vardı. ama bu sefer olay farklıydı çünkü hiç bir veri post edilmiyordu yani herşey client tarafındaydı. kaynak kodda şifrelenmiş bir javascript vardı. localde düzenleyip javascripti reverse etmeye başladım. öncelikle kullanıcı adı md5 formatındaydı javascriptteki kütüphanelerden bunu anlamıştım. bu md5’i reserve ederek bulmak imkansızdı bu yüzden online eşleşmelere bakmak gerekliydi bu hashında “alparslan” olduğu ortaya çıktı. şifre ise 9 karakterli olmak zorundaydı. iç fonksiyonlara girince şifrenin tek karakterlerinin ve çift karakterlerinin algoritması farklıydı biri alparslan’a karakterlerine göre toplama biri çarpma ile bulunuyordu. gerekli hesaplamaları yapıp 9 karakteri tek tek yerine oturtturduğumuzda şifreninde “TCVatanTC” olduğunu buldum. gayet uğraştırıcı ve güzel bir soruydu 🙂

 

Soru 6 – Holowy Conz den beklediğimiz mesaj geldi, acaba nedir ? (Yapamadım !)

karşımızda eli klavyede bir resim çıkmıştı ve beklenen “mesaj” dediğine göre mesaj resmin içinde olmalıydı. yine exif’ine baktım içine baktım yaklıştırdım rgb alpha değerleriyle oynadım sonuç elde edemedim. o zaman içinde gizli birşeyler var dedim. ve Steganography olarak adlandırılan bir çözümü olduğunu düşündüm. fakat birden fazla algoritma vardı. resim içine gizleme yazı gizleme ses gizleme bile vardı ve başlı başına bir deryaydı. daha geçen hafta bilgisayar mühendisliği okuyan arkadaşımla yaptığımız bir ödevde bit-plane-slice konusunda program yazmıştık. nedense burada deneysim geldi. kodlar tam olarak şöyle.

cv::Mat img = cv::imread("c:\\indexx.png", CV_LOAD_IMAGE_COLOR);
cv::imshow("original", img);
Mat out1(img.rows, img.cols, img.type());

 for (int y = 0; y < img.rows; y++) {
 for (int x = 0; x < img.cols; x++) {
 out1.at<uchar>(y, x) = (img.at<uchar>(y, x) & uchar(1)) ? uchar(255) : uchar(0);
 }
 }
 imshow("out1", out1);
 waitKey();
 return 0;

evet. karşımızda bir kare kodu çıktı kare kodu okuttuğumuzda ise “siberstar” yazıyordu. ama nedense bu bir cevap değildi. ve burada takıldım. sanıyorum ki “Holowy Conz” ile ilgili bir şey ise (algoritma ismi gibi birşey) resmi “siberstar” ile decode edip gerçek flag’a ulaşacağız. fakat dediğim gibi bu soruyu yapamadım :=)

Soru 7 – Algoritmada ne kadar hizlisin ?

Soru tam olarak şöyledi.

Bir silsileden(sequence) sifir yada daha fazla eleman atilarak elde edilen silsileye alt silsile denir. Alt silsileler arasinda silsile elemanlari sirali olanlara sirali alt silsile denir. Ornegin (1,5,6,3,4,2,9,10,11) silsilesinden elden edilen (1,5) ve (2,9,10) birer sirali alt silsiledir. Ayni zamanda (2,9,10,11) silsilesi en fazla uyeye sahip sirali alt silsiledir. Buna gore asagida elemanlari onaltilik (hexadecimal) sayi sisteminde verilen silsilenin en fazla elemana sahip sirali alt silsilesi nedir. Not: Cevap (1,25,216) formatinda (bosluksuz,virgullu ve parantezli) olmalidir. Elemanlar onluk (decimal) sayi sisteminde olmalidir. Soru Silsilesi:

(0x9a,0x85,0x9e,0xac,0xaa,0xc4,0xa4,0xbb,0xbe,0x9a,0x64,0x9e,0x8e,0x9b,0x70,0xb4,0x81,0xa3,0x81,0x9b,0x9c,0x68,0x68,0x8b,0x6b,0x83,0x70,0x81,0xb2,0xb9,0x75,0xa7,0xb2,0x98,0x7a,0x90,0x92,0xc0,0xbf,0x64,0x75,0x68,0x7a,0xc5,0xa2,0xaa,0xab,0xc4,0x78,0x6c,0xab,0xbb,0xb5,0x7c,0x95,0xa4,0xb2,0x73,0x84,0xa0,0x88,0x96,0x72,0x8d,0xac,0x85,0xa7,0xad,0x82,0x9d,0xab,0x99,0x7c,0x72,0x6d,0x6b,0x8c,0x8a,0xa7,0x7d,0x68,0x86,0xaf,0xbb,0x79,0x83,0x8c,0x7b,0x72,0xb2,0x6f,0x77,0xb6,0xb8,0xf4,0xF6,0x8c,0x67,0xb6,0xb5)

 

bunları decimal sayı sistemine çevireyim ki benimde okumam kolay olsun dedim. 0xleri silip bir java programı yazdım ve 154, 133, 158, 172, 170, 196, 164, 187, 190, 154, 100, 158, 142, 155, 112, 180, 129, 163, 129, 155, 156, 104, 104, 139 , 107, 131, 112, 129, 178, 185, 117, 167, 178, 152, 122, 144, 146, 192, 191, 100, 117, 104, 122, 197, 162, 170, 171, 19 6, 120, 108, 171, 187, 181, 124, 149, 164, 178, 115, 132, 160, 136, 150, 114, 141, 172, 133, 167, 173, 130, 157, 171, 1 53, 124, 114, 109, 107, 140, 138, 167, 125, 104, 134, 175, 187, 121, 131, 140, 123, 114, 178, 111, 119, 182, 184, 244, 246, 140, 103, 182, 181 çıktısını aldım. burdan da örneğe göre en uzunu nu bold yaptım. parantezliyip boşluk silip md5leyince cevap çıkmıştı.

 

Soru 8 – Splinter’ın bilgisayarından önemli veriler aldık, bunların ne olduğu bul ve bize bildir. (Yapamadım.!)

bir dosya veriyor ve bu dosya neyin nesi bilmiyoruz. header’a baktığımızda da “exe-MZ” yada img,jpg,rar,7z,memdump  vs vs vs bilindik  formatlara uymuyordu. Acaba neydi?

 

Soru 9 – Elimizde bir flash bellek var, içerisindeki resimlerden biri bize lazım.

Bir dosya iniyor ve soruda açıkça dediği gibi flash belleğin image’ıydı dosya içeriğinde açıkca anlaşılıyordu.dosyayı bunun için yapılmış herhangi bir programla sanal olarak(sanal cd mantığıyla) açtığımda dosyaları malesef göremedim. fakat dosyalar oradaydı çünkü yer kaplıyordu. “recuva” gibi bir recovery aracı kullanarak içindekileri görüp recovery ettim. “hacked.jpg kilit.jpg usom.png” bir kaç pdf docx ve rar dosyası bulunuyordu.rar dosyasının içinde yine 3 yada 4 adet pdf vardı fakat hedef açıktı 3 resimden biri lazımdı. fakat nedense 3 resmide açamadım. içeriğine baktığımda 8 adet 00(hex) verisinin jpg dosyaların başında olduğunu gördüm bunları sildiğimde resimler açılmıştı ama ipucu yoktu. (birinin exif’inde google yazıyordu ama bunda da bir çözüm elde edemedim) fakat usom.png de ilk bytelarında bozukbaslik yazıyordu. resim png olduğu için jpg den daha kolay şekildi PNG yazarak bozuk başlığı düzelttim ve resim açıldı fakat yinede cevap oldu. bu resim üzerinde odaklanmam gerektiği ortadaydı çünkü jpgler’in headerlarını program yanlış getirmiş olabilirdi ama usom.png el ile müdahele edilmişti. usom.png nin copyright exif’inde cevap ortadaydı. en kolay çözdüğüm sorulardan biriydi buda.

 

Soru 10- Zararlı bir hacker’ın bilgisayarından veri elde ettik, içerisindeki hackerin şifresini bulabilir misin ?

verilen dosya bir memory dosyasıydı. ve “dünyayı kurtaran hacker”‘da yapamadığım sorulardan biriydi 5 sene önce bunu çok iyi araştırmıştım. ve “İŞTE BU” dediğim an gelmişti. “volatility” i indirip. memdump u analiz ettim. “win7sp0” olduğunu değerlendirdi ve tabiki ilk yapılacak iş olan “pscan” yada “pslist” ile o anki çalışan işlemlere baktım. sıradan windows uygulamalarından farklı “cmd.exe, mspaint.exe, notepad.exe” açıktı tabi birde ram dökümünü alan program 🙂 fakat onla işimiz yoktu. bu sırada soru aklıma geldi ve “hacker’ın şifresi” dediğini hatırladım. “hashdump” ile windows ‘un parolasını aldım “administrators”  ve “usom” kullanıcı adlarının şifresi boştu. sonra tekrar odaklandım ve “cmd.exe” de neler olduğunu bittiğini anlamak için “consoles” komutunu verdim volatility’e fakat “flag burada da değil” yazmıştı. sırada “mspaint.exe” vardı memdump ile proccessi dump ettim. ve içini nasıl okuacağını bilmiyordum internetten araştırdığımda Google’ın CTF’lerinden birininde böyle bir soru sorulduğunu direkt olarak çıkartılan procdump da raw image olarak okunabileceği yazıyordu. bunun için “gimp” tercih ediliyordu denedim ve ofsetleri karıştırdım fakat sonuç çıkmadı 🙁 bu konuda üzülmüştüm ve “notepad.exe” ye gözükümü diktim onuda memdump ile proccess i dump ettim. içine baktım ama doğru düzgün birşey yok gibiydi bu yüzden stringlere bakıp hiç değilse içindeki yazılanı görebileceğimi umdum. ve umudum boşa çıkmadı. siberyildiz.com ‘un sitesi ve bir lsass dosyasına gidiyordu. girip dosyayı indirdim lsass bilindiği gibi winodows için yetkilendirmelerini kontrol eden proccesstir. bunuda 2012 ctf’inde şifrelerin alınabileceğini okuduğumu hatırladım. ve biraz araştırdıktan sonra (google’a “lsass memdump” yazmam yeterliydi)  “mimikatz” indirip lsass ı mimikatz a load ettikten sonra “sekurlsa::logonPasswords” komutunu verdiğimde cevap karşıma çıkıyordu.

wdigest :
* Username : USOM
* Domain : USOM-Bilgisayar
* Password : OK4D4RD4Z02D3G1LD1
kerberos :
* Username : USOM
* Domain : USOM-Bilgisayar
* Password : (null)

bu soruyu yapmamı “dünyayı kurtaran hacker” yarışmasına borçluyum 🙂

 

Soru 11 – Nedir bu sence ? (Yapamadım.!)

bir salyangoz resmi ve uzunda yazı vardı. salyangoz diyince akla ilk “fibonacci sayıları” gelir elbet 🙂 kendinden önceki 2 sayının toplamı sonraki sayıyı oluşturur. internetten baktığımızda

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987..

olarak gidiyor. verilen yazı ise ne hikmetse tam olarak 377 karakter uzunluğunda 🙂 fibonacci sayılarına denk gelen 14 karakteri aldığımızda anlamsız birşey çıkıyordu fakat bir türlü buradan yola çıkarak cevabı bulamadım 🙁 acaba cevap neydi?

Soru 12 – Yapabileceğine inancımız tam. (Yapamadım.!)

yapamadığım 6 sorudan biri buydu  bu yüzden kısaca değineceğim, sistemde blind sql olduğu açıktı ve bunu kullarak “files” tablosu  olduğunu öğrendim burada 2 sütün id ve path vardı. içinde de 1 içerik vardı. id’si 1 ve path ‘ise /tmp/a.jpg idi. malesef daha ilersine gidemedim.

soru 13 – Bu görev önünde iki seçenek var : başarılı olursun veya olamazsın (Yapamadım.! )

soruyu açtığımızda “nothing here” diyordu. burada değilse nerede diye sordum kendime. belkide ftp’de dir dedim. herşey http üzerinde olacak hali yok ya 🙂 ama ftp’de de değildi, biraz uğraştım ama yapamadım. sabah kalktığımda (sabah 9 da işe gitmem gerektiği ve site ddos yüzünden açılmayıp diğer sorulara bakamadığım için sabah 5 de yattım ) nedense direkt robots.txt ‘ye bakmak geldi aklıma 🙂 uyku her zaman işe yarıyor. Bkz “dünyayı kurtaran hacker-binary,kart sorusu :)” disallow olarak: “cannotfindme” klasörü vardı. tabi direkt olarak oraya daldım. karşımızda admin olarak giriş yap diyordu. ve ilk akla gelen “admin:admin” ile giriş yapmayı denedim ve yaptım. sonra karşımıza “giriş başarılı, çalıştırılacak komut,ve komut için parola” yazıyordu.bu ise get ile işleniyordu. “?pass=X&cmd=ls” tarzında.  “pass” alanını yok ettim çünkü geçen aylarda “Paypal’ın” güvenlik sorularında böyle bir açık çıkmıştı, oraya feyz alınmıştır diye düşündüm. fakat umduğum gibi çıkmadı ve burada kaldım 🙂

 

 

 

 

İlk Yorumu Siz Yapın

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.