Merhaba arkadaşlar askerlik, iş falan derken yazı paylaşamadım. Bugün ise ucundan da olsa exploit geliştirme konusuna değinmek istedim. Daha doğrusu exploit geliştirirken neye dikkat etmenizi anlatacağım.
Exploit geliştirme konusunda dikkat etmemiz gereken en önemli kısımlardan bir tanesi exploit kodun çalışacağı işletim sisteminin mimarisi ve türüdür. Burada kilit kısım RAM içerisinde tutulan EIP kaydedicisidir. EIP bir sonraki çalışacak kodun hafızada tutulduğu adresi taşır. EIP değerinin değiştirilmesi ile programın akışı değiştirilebilmektedir. Buda zaten herkesin uzaktan yakından tanıdığı bellek taşması (Buffer Overflow) zafiyetini ortaya çıkarmaktadır. EIP kaydedicisine istediğimiz adresi oturtmak istersek (akışı değiştirmek için) bunu işletim sisteminin mimarisine göre düz veya ters şekilde yazabiliriz. Peki nedir bu ters düz?
Veri hafızaya yazılırken verinin yazılma işlemi düşük değerli bayttan başlanıyorsa LITTLE ENDIAN formatında çalışıyor ve sağdan okuma yapılıyor demektir.
Veri hafızaya yazılırken verinin yazılma işlemi yüksek değerli bayttan başlanıyorsa BIG ENDIAN formatında çalışıyor ve soldan okuma yapılıyor demektir.
Örnek vermek gerekirse XP SP3 üzerinde geliştirilen exploit kod ters şekilde yani LITTLE ENDIAN olarak yazılmalıdır. Bir işletim siteminin düz mü ters mi olduğunu internette bulduğum aşağıdaki kod parçacığı ile öğrenebilirsiniz.
if(*(char *) & n == 1 kodu ile rakamın konulmaya başlanıldığı adresin gösterdiği bit kontrol ediliyor. Eğer sağdan okuma yapılıyorsa sonuç 1 yani Little Endian, soldan okunuyorsa 0 dönecektir buda Big Endian olduğunu gösterecektir.