Bu yazımızda stack tabanlı taşmayı ele alacağız.İlk önce stack nedir bunu ele almak gerekiyor.Stack tıpkı heap gibi ram'in içerisinde ki bölgelerden bir tanesidir.Kabataslak söyleyecek olursak eğer programı yazarken boyutlarını belirliyorsak burası stack'e, belirlemiyorsak heap bölgesi üzerinden ayrılır.Tabi ki bu konu hakkında bir çok söz edilebilir fakat bizim için bu kadarı yeterli olur sanırım.Örnek verecek olursak;
int arvixindizisi[5]; // stack bölgesi üzerinden ayrıldı.
int arvixindizisi[]; // heap bölgesi üzerinden ayrıldı.
Bu örneği birde linuxumuz üzerinden ele alalım.
Aşağıda ki kodumuza bakacak olursak;
Pointer vasıtasıyla bir string tanımlamışız bu string'ide açtığımız 2 byte'lık bir diziye aktarmaya çalışmışız. Pointer'da tanımladığımız string 14 byte'lık yer kaplıyorken (1 karakter 1 byte'tır). 2 byte'lık bir diziye aktarınca segmentation fault yani taşma hatasını almış bulunmaktayız.
int arvixindizisi[5]; // stack bölgesi üzerinden ayrıldı.
int arvixindizisi[]; // heap bölgesi üzerinden ayrıldı.
Bu örneği birde linuxumuz üzerinden ele alalım.
Aşağıda ki kodumuza bakacak olursak;
Pointer vasıtasıyla bir string tanımlamışız bu string'ide açtığımız 2 byte'lık bir diziye aktarmaya çalışmışız. Pointer'da tanımladığımız string 14 byte'lık yer kaplıyorken (1 karakter 1 byte'tır). 2 byte'lık bir diziye aktarınca segmentation fault yani taşma hatasını almış bulunmaktayız.