Buffer Overflow'da ROP Zinciri Kurma

Merhaba dostlar, bugün siber güvenlik camiasında sıkça karşılaştığımız klasik bir konuya derinlemesine dalalım: Buffer overflow açıklarından ROP (Return Oriented Programming) zinciriyle nasıl istismar geliştirilir. Bu teknik, modern sistemlerdeki NX bit gibi korumaları bypass etmek için oldukça etkili. Basit bir C programındaki stack taşmasını ele alarak, adım adım nasıl çalıştırılabilir kod parçalarıyla shell elde edebileceğimizi görelim. Gerçek hayatta bu tür açıklar hâlâ bankacılık yazılımlarından IoT cihazlarına kadar birçok yerde karşımıza çıkıyor.

Öncelikle zafiyeti anlamak lazım. Bir programda strcpy gibi güvenli olmayan fonksiyonlar kullanıldığında, kullanıcı girdisi stack'i aşıp dönüş adresini ezer. Bu durumda EIP'yi kontrol altına alarak programı istediğimiz yöne yönlendirebiliriz. Ama ASLR ve DEP gibi korumalar devredeyken direkt shellcode enjekte etmek imkânsız hale geliyor. İşte burada ROP devreye giriyor: Programın kendi içindeki gadget'ları (küçük kod parçaları) zincirleyerek istenen işlemi yaptırıyoruz.

Pratikte gdb ile programı inceledikten sonra pop-ret gibi gadget'ları bulup zinciri oluşturuyoruz. Örneğin libc içinden system() çağrısını tetiklemek için gerekli offset'leri hesaplıyoruz. Bu süreçte pwntools gibi araçlar işimizi kolaylaştırıyor ama temel mantığı kavramak için manuel denemek şart.



Bu zinciri oluştururken dikkat etmen gereken nokta, adreslerin doğru hizalanması ve null byte içermemesi. Denemeler sırasında core dump'ları incele, stack düzenini bozmadan ilerle. Gerçek bir pentestte bu yöntemi kullanarak yetki yükseltme senaryoları yaratabilirsin. Bol şans, denemeye devam et!

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
133,703Konular
3,289,425Mesajlar
324,434Kullanıcılar
NişastaSon Üye
Üst Alt