Revealed content
Temel Kavramlar
Hafıza tabanlı taşıma problemlerinden yararlanarak exploit geliştirmek için temel seviyede Assembly kodlama, çalışma mantığını anlaşılması, stack, heap gibi yapıların önemi büyüktür. Bu kounda okuyacağınız kavramlar sizlere vereceğim temel kavramlardır. Hani bana diyorsunuz ya neyi biliyorsun. Hadi bakalım
) Neyse burada sizlere bilgi aktararak komutları, flagleri, kaydediciler hakkında kısa bilgiler vereceğim.
RAM (RANDOM ACCES MEMORY)
Bilgisayar içerisinde rastgele erişimli bellek olarak bilinir. Mikroişlemcili sistemlerde bir tür depolama alanı olarak kullanılır. Sistemdeki geçici verilerin depolandığı yerdir. Elektrik kesintisi yaşandığında bilgiler silinir Volatile Memory denir. RAM hdd'den hızlı çalışır.
CPU (Central Processing Unit)
CPU, pcnin beynidir. Bilgisayarda çalışan bir programın işleyişini yapan, giriş çıkışlar arasında irtibat kurarak mantıksal, aritmatik ve kontrol işlemleri gerçekleştirir. System Bus yapısı hafıza alanları, giriş ve çıkışlar arasında köprüdür.
CPU içerisinde yer alan bir takım registers hafızadaki yerleri belirlemede, aritmatik işlemleri yapmakta, hafızaya yazmakta, okumakta, döngü yapmakta gibi çeşitli işlemler için kullanılır.
Program Hafızası (RAM Bölümleri)
STACK : Yerel hafıza değişkenleri dönüş adresi ve EBP değeri burada bulunur. LIFO mantığı ile çalışmaktadır. Yüksek adresten düşük adrese göre yerleşim vardır. ESP stack bölgesinin en üst noktasını gösterir.
HEAP : int*ptr;ptr=malloc(100-sizeof(int)) malloc,realloc gibi dinamik hafıza alanı ayırmak için kullanılan komutlarla ayrılan bölge burasıdır.
.BSS : İçerisinde herhangi bir değer atanmamış global ve static değişkenler burada bulunur.
.DATA : İçerisinde değer bulunan global ve static değişkenler burada saklanır.
.CODE (.TEXT) : Program kodlarının binary yani makine diline çevrilmiş halleri buradadır.
Stack ve Heap bölümleri exploit geliştirmede odak yeridir. Stack içinde bulunan fonksiyon değişkenleri, EBP değeri ve geri dönüş bilgileri saklanır. Heap de ise dinamik hafıza alanları bulunur. BSS içerisine bir değer atanmamış global ve statik değişkenler varken Data segmenti içerisinde global ve statik değişkenleri tutar. Code segmentiyse çalıştıracak programın makine kodlarına dönüştürülmüş halini saklar.
RAM içerisindeki segmentlerden sonra basit C kodu üzerinden program içerisindeki değişkenlerin hangi segmente gönderildiğine bakalım.


"global_bss" değişkeni herhangi bir değer atanmamış olan bir global değişken olduğu için bss segmentine gönderilirken global_data değişkeni 12 değeri olur. Data segment içerisine gönderilir. "c" değişkeni fonksiyon değişkeni olduğu için stack bölgesine yazılır. Stack içerisine return, geri gönüş adresi ve EBP değeri yerleşir. ESP içerisinde bulunan değer EBP'nin içine kopyalanır, EBP stack içerisinde referans adres olarak görünür.
Registers
CPU içerisinde bulunur. RAM içerisinde bir bölgeden okuma yapma, bölgeye yazma, aritmetik işlem, mantıksal işlemler gibi uygulamaların gerçekleştirilmesinde kullanılır. Genel amaçlı kaydediciler, EAX, EBX, ECX, EDX, ESP, EBP kaydedicilerdir. CS, DS, SS, ES , FS ve GS kaydedici segment kaydedicilerdir. EIP instruction pointer registerken CR kaydedicileri kontrol içindir. Kaydedicilerin kullanımında kullanılan veri tipleri bit kavramı, 1 veya 0'dan oluşur. Nibble 4 bitten oluşan parçadır. Byte 8 bitten oluşan veriyken Word 16 bitlik veri parçaların olarak tahmin edilir. Dword ise 32 bitlik veri parçalarını temsil eder.
Hafıza tabanlı taşıma problemlerinden yararlanarak exploit geliştirmek için temel seviyede Assembly kodlama, çalışma mantığını anlaşılması, stack, heap gibi yapıların önemi büyüktür. Bu kounda okuyacağınız kavramlar sizlere vereceğim temel kavramlardır. Hani bana diyorsunuz ya neyi biliyorsun. Hadi bakalım
RAM (RANDOM ACCES MEMORY)
Bilgisayar içerisinde rastgele erişimli bellek olarak bilinir. Mikroişlemcili sistemlerde bir tür depolama alanı olarak kullanılır. Sistemdeki geçici verilerin depolandığı yerdir. Elektrik kesintisi yaşandığında bilgiler silinir Volatile Memory denir. RAM hdd'den hızlı çalışır.
CPU (Central Processing Unit)
CPU, pcnin beynidir. Bilgisayarda çalışan bir programın işleyişini yapan, giriş çıkışlar arasında irtibat kurarak mantıksal, aritmatik ve kontrol işlemleri gerçekleştirir. System Bus yapısı hafıza alanları, giriş ve çıkışlar arasında köprüdür.
CPU içerisinde yer alan bir takım registers hafızadaki yerleri belirlemede, aritmatik işlemleri yapmakta, hafızaya yazmakta, okumakta, döngü yapmakta gibi çeşitli işlemler için kullanılır.
Program Hafızası (RAM Bölümleri)
STACK : Yerel hafıza değişkenleri dönüş adresi ve EBP değeri burada bulunur. LIFO mantığı ile çalışmaktadır. Yüksek adresten düşük adrese göre yerleşim vardır. ESP stack bölgesinin en üst noktasını gösterir.
HEAP : int*ptr;ptr=malloc(100-sizeof(int)) malloc,realloc gibi dinamik hafıza alanı ayırmak için kullanılan komutlarla ayrılan bölge burasıdır.
.BSS : İçerisinde herhangi bir değer atanmamış global ve static değişkenler burada bulunur.
.DATA : İçerisinde değer bulunan global ve static değişkenler burada saklanır.
.CODE (.TEXT) : Program kodlarının binary yani makine diline çevrilmiş halleri buradadır.
Stack ve Heap bölümleri exploit geliştirmede odak yeridir. Stack içinde bulunan fonksiyon değişkenleri, EBP değeri ve geri dönüş bilgileri saklanır. Heap de ise dinamik hafıza alanları bulunur. BSS içerisine bir değer atanmamış global ve statik değişkenler varken Data segmenti içerisinde global ve statik değişkenleri tutar. Code segmentiyse çalıştıracak programın makine kodlarına dönüştürülmüş halini saklar.
RAM içerisindeki segmentlerden sonra basit C kodu üzerinden program içerisindeki değişkenlerin hangi segmente gönderildiğine bakalım.


"global_bss" değişkeni herhangi bir değer atanmamış olan bir global değişken olduğu için bss segmentine gönderilirken global_data değişkeni 12 değeri olur. Data segment içerisine gönderilir. "c" değişkeni fonksiyon değişkeni olduğu için stack bölgesine yazılır. Stack içerisine return, geri gönüş adresi ve EBP değeri yerleşir. ESP içerisinde bulunan değer EBP'nin içine kopyalanır, EBP stack içerisinde referans adres olarak görünür.
Registers
CPU içerisinde bulunur. RAM içerisinde bir bölgeden okuma yapma, bölgeye yazma, aritmetik işlem, mantıksal işlemler gibi uygulamaların gerçekleştirilmesinde kullanılır. Genel amaçlı kaydediciler, EAX, EBX, ECX, EDX, ESP, EBP kaydedicilerdir. CS, DS, SS, ES , FS ve GS kaydedici segment kaydedicilerdir. EIP instruction pointer registerken CR kaydedicileri kontrol içindir. Kaydedicilerin kullanımında kullanılan veri tipleri bit kavramı, 1 veya 0'dan oluşur. Nibble 4 bitten oluşan parçadır. Byte 8 bitten oluşan veriyken Word 16 bitlik veri parçaların olarak tahmin edilir. Dword ise 32 bitlik veri parçalarını temsil eder.
Bu içeriği görmek için giriş yapın.
Son düzenleme: