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

SoderCTF – HackAydın – WriteUp Soru çözümleri

Start

Soru ufak bir OSINT sorusuydu, kolaylıkla bulup yapabildiğimiz bir soru.

flag{blackboxsectr}

Mobile-1

APK’ı indirip Jadx programı ile decompile ettiğimizde kodlar “obfuscate” edilmeden yayınlandığı için flag’ın “base64” ile encode edilmiş hali karşımıza çıkmaktaydı.
“ZmxhZ3t0ZWJyaWtsZXItbW9iaWwxMDItaWJua2hhbGR1bn0” -> flag{tebrikler-mobil102-ibnkhaldun}

Mobile-2

APK’ı indirip Jadx programı ile decompile ettiğimizde kodlar “obfuscate” edilmeden yayınlandığı için flag’ın “base64” ile encode edilmiş hali karşımıza çıkmaktaydı.
“ZmxhZ3ttb2JpbDEwMy10ZWJyaWtsZXJ9” -> flag{mobil103-tebrikler}

Mobile-3

APK’ı indirip Jadx programı ile decompile ettiğimizde kodlar “obfuscate” edilmeden yayınlandığı için flag’ın “base64” ile encode edilmiş hali karşımıza çıkmaktaydı.
“ZmxhZ3t0ZWJyaWtsZXItbW9iaWwxMDF9” -> flag{tebrikler-mobil101}

Web-0

Websayfasına girdiğimiz karşımıza matrixde kırmızı elbiseli kadın çıkıyordu. lakin karşımızda 1 adet “kaynak koda bak” şeklinde link vardı. buraya girdiğimizde ise “Bu kadar kolay olmamali degil mi? ” yazısı karşımızdaydı. Resmin altında ise bir input ve button vardı. Ne işe yarıyor anlamak için hemen “deneme” yazıp enterlıyoruz.

karşımıza hata çıkıyor,bu hata bize “index.” dosyasının 14. satırında “create_function()” olduğunu fakat hata verdiğini söylemektedir.
*create_function” fonksiyonu phpde dinamik olarak fonksiyon oluşturmamızı sağlar. * Kaynak

Bu hatadan anlıyoruz ki bu fonksiyonu abuse etmemiz gerekecek.bunun için öncelikle kendi fonksiyomuzdan çıkmayı deneyelim ve istediğimiz bir methodun çalıştığını doğrulayalım.
bunun için olması gerektiği gibi basit bir kod yazalım. “return “1”;” gibi. kodumuz çalıştığında şu ekranla karşılaştık.

bu demek oluyor ki biz bu fonksiyona müdahelede bulunabiliyoruz. daha sonra bu fonksiyondan kaçmak için “}” karakterini kullanıyoruz ve çalışmasını istediğimiz kodu yazıyoruz. burada “;}system(“ls”);/*” komutunu çalıştırdım.

görüldüğü üzere flag.php diye bir dosyamız mevcut hemen system komutunu “cat flag.php” ile değiştirelim. flag karşımızda

flag{SODER_Y3z_ab1_b4_fl4g}

Web-1

Emacs Backup Form şeklinde bir form karşılıyordu bizi. ilk bakışta anlamamız gereken şey ise “emacs”ın auto save özellikliğininden faydalanamız gerekmekte. emacs her dosyayı kaydetdiğinde “lodos.txt” sonunda “~,~1~,~2~,~~,.emacs” gibi uzantılar atıyor. index e ve login formunda resme bunları atmamıza rağmen bir sonuca ulaşamadım. daha sonra forma bir deneme yaptımızda bizi farklı bir yere attı buradan farklı bir adrese oradan da farklı bir adrese attı. ama ne dosyalarda ne resimlerde emacs backup file yoktu. gobuster yada ffuf gibi yazılımları çalıştırğımızda, passwords dosyası olduğunu gördük ve bu sayfaya tilde işaretini atınca karşımza bazı username ve passwordlar çıktı. bunları anasayfadaki login formu deneyince flag ortaya çıktı.

Flag{L1nUx_B@ckuP_F1L3}

Web-2

Karşımıza “yetkiniz yok” yazısı çıkmakta ve bizi “?file=attacker.php” adresine yönlendirmekteydi. burada LFI olduğunu sezip hemen ilk payloadumuz olarak “../../../../../../../etc/passwd” yazıyoruz. ve bingo. LFI’miz doğrulandı.
LFI bulduğumuzda shell almanın bazı yolları vardır, bunları deneyerek shell almaya çalıştım fakat başarılı olamadım. daha sonra yapılacak iş “/var/www/html” klasöründe flag.txt,flag.php gibi dosyaları aramak ama buda başarısız. o zaman “attacker.php”e bakmanın zamanı gelmiş demektir. fakat dosyaya baktığımızda derlenerek cevap veriyordu. o zaman php://filter in çalıştığını doğrulamamız lazımdı.

php://filter çalıştığına göre “/convert.base64-encode” kullanarak “attacker.php”yi base64 e çevirerek bakalım dedik ve basse64u decode ettiğimizde nur topu gibi “exec” komutumuz bizi bekliyordu, lakin burada bir parola koruması var bunuda COOKIE değerimizden alıyor bu değer “attacker.php” de olmadığı için, “connect.php” dosyasında olmalıydı. buradaki parolayı COOKIE değerimize girdikten sonra karşımıza bir alan açıldı.ve artık “exec” komutuna erişimimiz var.

burada printf ve echo kısmı var ve bu ikisinen birini sömürmemiz lazım. “printf” komutu “formatlarayarak ekrana yazı yazdıran” bir komuttur ilk parametresine aldığı “%s %d” gibi karakterleri sonrasında gelen parametre ile formatlar ve çıktı verir. bizim kodumuz şöyle olmalı “printf ‘%s’ `whoami` ” gibi, ve komutumuz “%s’ `whoami`” gibi gönderiyoruz ve komutumuz istediğimiz çalışıyor. şimdi sunucuda biraz gezinelim.

Web-3

XXXX

Pwn-0

XXXX

Pwn-1

XXXX

Reverse-1

XXXX

Reverse-2

XXXX

Reverse-3

XXXX

Reverse-4

XXXX

Reverse-5

XXXX

Reverse-6

XXXX

ASM-1

XXXX

ASM-2

XXXX

OSINT-1

Soruda bir ipucu veriliyor ve elimizde yalnızca mac adresine benzer “82:2a:a8:7b:6b:f1” bir adres var. fakat vendor list’e baktığımızda hiç bir vendor’a ait olmadığını görüyoruz. bunun bssid olduğunu tahmin ediyorum, ve dünya üzerindeki wifi ağlarını gösteren bir sitede aratmak istiyorum. ve karşıma bu bssid e ait bir adet wifi çıkıyor, istanbula yakınlatığımızda “ayasofya”‘a ait bir wifi ağı olduğunu gördük. flag formatıyla yazdığımızda doğru cevabı bulmuş olduk.

flag{AYASOFYA2020!}

Stego-1

XXXX

Tek Yorum

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.