0Pricing
Ethical Hacking Academy · Ders

EIP'yi Denetleme

Dönüş adresinin üzerine yazın

EIP'yi Denetleme, CoddyKit'te ücretsiz bir Ethical Hacking Academy dersidir. Bu, 4 dersinin 3. 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.

Amaç

Uzaklığı biliyorsunuz; dolayısıyla EIP'ye herhangi dört baytı yerleştirebilirsiniz. Şimdi soru şu: oraya hangi adresi koymalısınız?

EIP'nin kabuk kodunuzu göstermesini istersiniz. Ancak yığın adresini doğrudan sabitleyemezsiniz; güvenilir bir atlamaya ihtiyacınız vardır.

Yığın Adresi Neden Doğrudan Sabitlenmemeli

Kabuk kodunuzun bulunduğu yığın adresi çalıştırmalar ve sistemler arasında değişebilir. Ortamdaki küçük değişiklikler bile bu adresi hareket ettirir.

Bunun yerine bellekte zaten bulunan ve yürütmeyi ESP'nin o anda gösterdiği yere yönlendiren kararlı bir komut kullanırsınız.

JMP ESP Hilesi

Çökme anında ESP kabuk kodunuzu gösteriyorsa EIP'yi bir JMP ESP komutunun adresine ayarlayabilirsiniz. EIP bu adresi yüklediğinde CPU jmp esp komutunu çalıştırır ve kabuk kodunuza atlar.

Bu dolaylı yönlendirme, kesin yığın adresinden bağımsız olarak istismarı güvenilir hâle getirir.

jmp esp   ; opcode FF E4

JMP ESP Bulma

Yüklenen modüllerde (tercihen ASLR'siz olanlarda) FF E4 işlem kodu baytlarını ararsınız. Modülün taban adresi sabit kaldığından bu aygıt güvenilirdir.

mona.py gibi araçlar uygun komutları otomatik olarak bulur.

!mona jmp -r esp -cpb "\x00"

Hatalı Karakterlerden Kaçınma

Bazı bayt değerleri, girdi arabelleğe bozulmadan ulaşmadan önce onu bozar. Klasik örnek, C dizelerini sonlandıran null baytıdır 0x00. Diğer örnekler arasında 0x0a (yeni satır) ve 0x0d (satır başı) bulunur.

JMP ESP adresi bu hatalı karakterlerden hiçbirini içermemelidir.

Hatalı Karakterleri Belirleme

Hangi baytların hatalı olduğunu bulmak için arabelleğe 0x00-0xff arasındaki tüm bayt değerlerini gönderin ve hata ayıklayıcıda belleği inceleyin. Değiştirilmiş veya eksik olan baytlar hatalı karakterlerdir.

Bunları hem dönüş adresinden hem de kabuk kodundan çıkaracaksınız.

!mona bytearray -cpb "\x00"

EIP Üzerine Yazımını Oluşturma

Şimdi girdiyi birleştirin: uzaklığa kadar dolgu, ardından little-endian sırasıyla JMP ESP adresi.

JMP ESP 0x625011AF adresinde bulunuyorsa yazılan baytlar ters çevrilir.

buf = "A"*offset + "\xaf\x11\x50\x62"  # 0x625011AF, little-endian

Atlamayı Doğrulama

Hata ayıklayıcıda JMP ESP adresine bir kesme noktası koyun ve istismarı çalıştırın. EIP bu adrese ulaşıp ESP'ye geçtiğinde güvenilir yönlendirmeyi doğrulamış olursunuz.

Bu noktada EIP, kabuk kodunuzun gideceği yeri gösterir.

Kabuk Kodu İçin Yer Açma

Dönüş adresinden sonra kalan arabellek (ESP'nin gösterdiği bölüm) kabuk kodunuzu içerir. Alan darsa kısa bir atlama kullanmanız veya kodu başka yere taşımanız gerekebilir.

Kabuk kodundan önce bir NOP kızağı (0x90 no-op baytlarından oluşan bir dizi) bulunması tolerans sağlar; böylece atlama kızağın herhangi bir yerine ulaşabilir.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Hepsini Birleştirme

Artık tam istismar yapısı açıktır:

  • Uzaklığa kadar dolgu.
  • JMP ESP adresi (hatalı karakter içermeyen, little-endian biçiminde).
  • Bir NOP kızağı.
  • Kabuk kodu.

Kabuk açmaya bir adım kaldı.

JMP ESP'ye Alternatifler

JMP ESP klasik yönlendirmedir, ancak tek seçenek değildir. Farklı bir yazmaç arabelleğinizi gösteriyorsa jmp eax, call esp veya push esp; ret aygıtını kullanabilirsiniz.

İlke aynıdır: kabuk kodunuzun bulunduğu yere denetimi aktaran kararlı bir komut bulun.

Hızlı Kontrol

JMP ESP'nin doğrudan sabitlenmiş bir yığın adresine neden tercih edildiğini hatırlayın.

Özet

Artık yürütme akışını denetliyorsunuz:

  • Kırılgan bir yığın adresi yerine EIP'nin üzerine bir JMP ESP aygıtının adresini yazın.
  • 0x00 gibi hatalı karakterlerden kaçınarak aygıtı ASLR kullanmayan bir modülde bulun.
  • Adresi little-endian biçiminde yazın ve kabuk kodundan önce bir NOP kızağı ekleyin.

Sonraki adımda kabuk kodu oluşturacak ve kabuk açacaksınız.

Sıkça Sorulan Sorular

“EIP'yi Denetleme” dersi ücretsiz mi?

Evet — “EIP'yi Denetleme” 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.

“EIP'yi Denetleme” dersinde ne öğreneceğim?

Dönüş adresinin üzerine yazın 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 3. dersidir.

“EIP'yi Denetleme” 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