0Pricing
Ethical Hacking Academy · Ders

Çökmeler için Bulanıklaştırma

Ofseti bulun

Çökmeler için Bulanıklaştırma, CoddyKit'te ücretsiz bir Ethical Hacking Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ethical Hacking Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ethical Hacking Academy kursu toplamda 4 dersten oluşur.

Fuzz Testi Nedir

Fuzz testi, beklenmeyen davranışları, özellikle çökmeleri tetiklemek için bir programa hatalı biçimlendirilmiş veya aşırı büyük girdiler göndermektir. Bir çökme çoğu zaman bellek bozulması hatasına işaret eder.

Arabellek taşmalarında ilk amaç, taşmanın var olduğunu anlamak için hedefin çökmesini sağlamaktır.

İş Akışı

Klasik istismar iş akışı şöyledir:

  • Programı çökertmek için fuzz testi uygulayın.
  • Dönüş adresine olan kesin uzaklığı bulun.
  • EIP'yi denetleyin.
  • Kabuk koduna yönlendirin.

Bu ders ilk iki adımı kapsar.

Hata Ayıklayıcıya Bağlanma

Çökmeleri gözlemlemek için hedefe bir hata ayıklayıcı (Windows'ta Immunity Debugger veya x64dbg, Linux'ta GDB gibi) bağlayın.

Program çöktüğünde hata ayıklayıcı, özellikle dönüş adresinin üzerine yazıp yazmadığımızı gösteren EIP başta olmak üzere yazmaçların durumunu gösterir.

Giderek Büyüyen Girdi Gönderme

Basit bir fuzz aracı, program çökene kadar giderek büyüyen dizeler gönderir. Yaygın bir başlangıç noktası, çok sayıda 'A' karakteri (0x41) göndermektir.

Çökmeden sonra EIP 41414141 değerini gösteriyorsa dönüş adresini denetleyebildiğiniz doğrulanmıştır.

python -c 'print("A"*2000)' | ./vuln

Çökmeyi Doğrulama

Uygulama çöktüğünde ve EIP 41414141'e eşit olduğunda taşma, kaydedilmiş dönüş adresine ulaşmıştır.

Ancak EIP'den önce tam olarak kaç bayt bulunduğunu henüz bilmiyorsunuz. Aynı baytın tamamını göndermek EIP'nin denetlenebildiğini, nerede bulunduğunu değil, gösterir.

Uzaklığı Bulma: Döngüsel Desenler

Kesin uzaklığı bulmak için tüm 'A' karakterleri yerine tekrarlanmayan benzersiz bir desen gönderin. Her 4 baytlık pencere farklı olduğundan EIP'ye ulaşan değer uzaklığı belirler.

Metasploit bunun için pattern_create.rb aracını sağlar.

msf-pattern_create -l 2000

Uzaklığı Okuma

Desenle çökme oluşturduktan sonra EIP'deki değeri not edin. Bu değeri pattern_offset.rb'ye verin; araç EIP'den önceki kesin bayt sayısını döndürür.

Bu uzaklık, dönüş adresi baytlarından önceki dolgu verinizin boyutudur.

msf-pattern_offset -l 2000 -q 39654138

Uzaklığı Doğrulama

Her zaman doğrulama yapın. offset bayt uzunluğunda 'A' karakterlerinden ve ardından dört 'B' baytından (0x42) oluşan bir girdi hazırlayın. EIP 42424242 değerine dönüşürse uzaklık kesindir.

Bu doğrulama, daha sonra birkaç baytlık bir hatayı ayıklarken saatlerinizin boşa gitmesini önler.

"A"*offset + "B"*4   # EIP should become 42424242

ESP'yi Belirleme

EIP'yi denetledikten sonra, çökme anında ESP'nin nereye işaret ettiğini de not edin. ESP genellikle üzerine yazılmış dönüş adresinin hemen sonrasını, yani arabelleğinizin kalan kısmını gösterir.

Daha sonra kabuk kodunu yerleştireceğiniz alan burasıdır.

Araçların Özeti

Yararlı fuzz testi ve desen araçları şunlardır:

  • Spike ve boofuzz: ağ iletişim kuralı fuzz araçlarıdır.
  • pattern_create / pattern_offset: EIP uzaklığını bulur.
  • Immunity içindeki mona.py: desen, uzaklık ve hatalı karakter görevlerini otomatikleştirir.
!mona pattern_create 2000

Tekrarlanabilirlik Önemlidir

Yararlı bir çökme tekrarlanabilir olmalıdır. Çökmeyi tetikleyen tam girdiyi kaydedin ve uzaklığın sabit olduğunu doğrulamak için temiz bir durumdan yeniden çalıştırın.

Tutarsız çökmeler çoğu zaman hatanın temiz bir yığın taşması olmadığı veya bazı koşulların (zamanlama, uzunluk, içerik) çalıştırmalar arasında değiştiği anlamına gelir.

Hızlı Kontrol

Döngüsel bir desenin neden aynı baytlardan oluşan bir dizeden daha iyi olduğunu hatırlayın.

Özet

Artık çökme uzaklığını nasıl bulacağınızı biliyorsunuz:

  • Çökmeyi tetiklemek için büyüyen girdilerle fuzz testi uygulayın; EIP'deki 41414141 ile doğrulayın.
  • Kesin uzaklığı bulmak için pattern_create / pattern_offset ile bir döngüsel desen kullanın.
  • Dolgudan sonra dört 'B' baytı (42424242) ekleyerek doğrulayın.
  • Daha sonra kabuk kodunu yerleştirmek için ESP'nin nereye işaret ettiğini not edin.

Sonraki adımda EIP'yi tamamen denetleyecek ve yürütmeyi yönlendireceksiniz.

Sıkça Sorulan Sorular

“Çökmeler için Bulanıklaştırma” dersi ücretsiz mi?

Evet — “Çökmeler için Bulanıklaştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ethical Hacking Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ethical Hacking Academy kursu toplamda 4 dersten oluşur.

“Çökmeler için Bulanıklaştırma” dersinde ne öğreneceğim?

Ofseti bulun Ethical Hacking Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Ethical Hacking Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Ethical Hacking Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Çökmeler için Bulanıklaştırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Ethical Hacking Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Ethical Hacking Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bellek ve Yığın
  2. Çökmeler için Bulanıklaştırma
  3. EIP'yi Denetleme
  4. Kabuk Kodu ve İstismar
← Ethical Hacking Academy Sayfasına Dön