crackmes.one Gerryvanboven’s Get The Passcode Çözümü

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
wakeup tarafından yazılmıştır.

[TR] Gerryvanboven’s Get The Passcode Çözümü​


Selamlar herkese! Bu konuda sizlere C/C++ ile gerryvanboven tarafından yazılmış cross-platform (çapraz platform) bir crackme’nin çözümünü anlatacağım. Zamanınızı fazla almadan başlayalım…

Hazırlık​


Reverse’in vazgeçilmezlerinden birisi hem disassembler hem de bir debugger olarak kullanılabilen açık kaynaklı radare2 aracını kullanacağız. Programı decompile edebilmek için r2dec isimli plugin’den faydalanacağız. Aslında bu plugin’e radare2’nin decompiler’ı diyebiliriz çünkü kendisi asm(Assembly) kodunu, pseudo-C koduna çevirmektedir.

Çözeceğimiz crackme’yi buradan indirebilirsiniz. RAR şifresi > crackmes.one

Başlayalım!​


Programı çalıştırdığımızda bizden bir şifre girmemizi istiyor. Programın nasıl bir output yani çıktı vereceğini görmek için bir şifre girdiğimizde ve çıktı olarak 0, wrong passcode! veriyor. Bu da tabiki şifrenin yanlış olduğu anlamına gelmekte ve böylece yanlış şifre girildiğinde nasıl bir çıktı ile karşılaştığımızı öğrenmiş olduk.

1-5.png

Yanlış değer girdiğimizde karşılaştığımız çıktı

Analizimize yavaş yavaş başlayalım. Öncelikle programı radare2 ile açıyoruz. Ardından aaa komutu ile binary dosyalarının analizinin gerçekleştirilmesini sağlıyoruz. afl komutu ile programda bulunan fonksiyon adreslerini görüntüledikten sonra tabiki ilk olarak main fonksiyonunu incelemek için main adresine s main ile geçiş yapıyoruz.

2-2-300x109.png

Yukarıda bahsedilen komutların çıktıları

Şimdi sıra decompile işleminde. Burada bize r2dec yardımcı olacak. pdd ile geçiş yapmış olduğumuz main fonksiyonunu decompile ettiğimizde aşağıdaki ekranla karşılaşıyoruz. Kodu açıklamak gerekirse ilk olarak var_H değişkenine 0x130104 değeri atanıyor. Arından kullanıcıdan bir şifre istiyor ve bunu EAX’da depoluyor. 50. satırda ise kullanıcıden gelen bu değeri var_4h değişkeni ile karşılaştırıyor. Eğer bu iki değişken aynı ise “right !” çıktısı veriyor. Yani buradan 0x130104 değerinin bize lazım olan şifre olduğunu anlamış olduk, zaten belirttiğim gibi kullanıcıdan aldığı çıktı ile karşılaştırıyor.

3-2-300x159.png

Programın kodları

Elde etmiş olduğumuz değerin hexadecimal olduğu aşikar. Bu değeri decimal’e çevirdiğimizde doğru anahtarı ulaşmış oluyoruz.

4-1-300x177.png

Hexadecimal değeri decimal’e çevirme işlemi

Programı çalıştırıp bulmuş olduğumuz anahtarı girince de başarılı olduğumuzu görmüş olduk.

5-1.png

Doğru değer girilince karşılaştığımız çıktı

Çok temel de olsa basitinden C/C++ reverse işlemlerini göstermiş oldum. Okuduğunuz için teşekkür ederim, sağlıcakla kalın
🙂
 
Moderatör tarafında düzenlendi:
Geri
Üst