Arabellek taşmasını istismar etme, saldırgana bir işlemi kontrol etmesine veya sistemi çökertmesine ya da iç değişkenler üzerinde oynama yapmasına olanak tanır.
Arabellek taşması programlama hatası sonucu yanlışlıkla ortaya çıkabilir veya kötü amaçlı bir aktör tarafından meydana çıkarılabilir. Bir saldırgan, bir programa – rastgele kod yürütme (arbitrary code execution) olarak adlandırılan – özenle hazırlanmış bir girdi gönderebilir. Program bu girdiyi büyük olmayan bir arabellekte depolamaya çalışır. Arta kalan veri daha sonra sağ kısımda bulunan bitişik belleğe yazılırsa, arabellek taşması meydana gelir ve saldırgana hareket edebileceği bir alan oluşturmuş olur.
Arabellekteki orijinal veriler, işlemin bir sonraki aşamasına geçiş için gerekli olan bilgileri içerir. (Örn. işaretçi, dönüş işaretçisi vb.) Ancak saldırgan, bu veriler üzerinde oynamalar yaparak seçtiği bir adrese işaret edecek yeni değerler ayarlayabilir. Böylece, saldırgan genellikle yeni değerleri istismar yükünün (exploit payload) konumlandırıldığı bir konuma ayarlar. Bu değişiklik işlemin yürütme yolunu ve işaretçeilerini değiştirerek, denetimi saldırganın kötü amaçlı koduna yönlendirir.
Örneğin, bir programın kullanıcıların adlarını girmelerini beklediğini varsayalım. Adını girmek yerine, saldırgan yığın boyutunu aşan yürütülebilir bir komut girer. Komut genellikle kısadır. Örneğin, bir Linux ortamında, komut genellikle sisteme Linux çevrelerinde kök kabuk (root shell) olarak bilinen bir komut istemi penceresi açmasını söyleyen EXEC(“sh”) şeklindedir.
Ancak, arabelleğin yürütülebilir bir komutla taşması, komutun yürütüleceği anlamına gelmez. Saldırganın kötü amaçlı komutu işaret eden bir dönüş adresi belirtmesi gerekir. Yığın taştığı için program kısmen çöker. Daha sonra dönüş adresine giderek bunu kurtarmaya çalışır, ancak dönüş adresi saldırganın belirttiği komutu gösterecek şekilde değiştirildiği için, kötü amaçlı komutun çalışacağı adresi bilmesi gerekir.
Gerçek adrese ihtiyaç duymamak için, kötü amaçlı komut genellikle her iki tarafa da bir tür işaretçi olan NOP – veya işlem yapma! – talimatıyla doldurulur. Her iki tarafı da bu şekilde doldurma (padding), tam bellek aralığı bilinmediğinde kullanılan bir tekniktir. Saldırganın belirttiği adres bu doldurulmuş alanların içinde herhangi bir yere düşerse, kötü amaçlı komut çalıştırılır.