Integer Overflow
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Bir tam sayı taşmasının merkezinde, bilgisayar programlamasındaki veri türlerinin boyutu ve verinin yorumlanması tarafından dayatılan sınırlama bulunmaktadır.
Örneğin, bir 8-bit işaretsiz tam sayı 0 ile 255 arasındaki değerleri temsil edebilir. Eğer 256 değerini bir 8-bit işaretsiz tam sayıda saklamaya çalışırsanız, depolama kapasitesinin sınırlılığı nedeniyle 0'a sarılır. Benzer şekilde, 0 ile 65,535 arasındaki değerleri tutabilen bir 16-bit işaretsiz tam sayı için, 65,535'e 1 eklemek değeri tekrar 0'a sarar.
Ayrıca, bir 8-bit işaretli tam sayı -128 ile 127 arasındaki değerleri temsil edebilir. Bu, bir bitin işareti (pozitif veya negatif) temsil etmek için kullanılması ve geriye kalan 7 bitin büyüklüğü temsil etmesi nedeniyle olur. En negatif sayı -128 (ikilik 10000000
), en pozitif sayı ise 127 (ikilik 01111111
) olarak temsil edilir.
Potansiyel web güvenlik açıkları için maksimum desteklenen değerleri bilmek oldukça ilginçtir:
Yazdırılan sonuç 0 olacak çünkü char'ı taşırdık:
Kullanıcı girdisinden okunan bir işaretli tam sayının, uygun bir doğrulama olmaksızın, işaretsiz bir tam sayı olarak ele alındığı bir durumu düşünün:
Bu örnekte, bir kullanıcı negatif bir sayı girerse, bu sayı ikili değerlerin yorumlanma şekli nedeniyle büyük bir işaretsiz tam sayı olarak yorumlanacaktır ve bu da beklenmedik davranışlara yol açabilir.
Parolanın boyutunu saklamak için yalnızca 1B kullanıldığı için, bunu taşırmak ve uzunluğunun 4 olduğunu düşünmesini sağlamak mümkündür, oysa aslında 260'dır ve bu da uzunluk kontrol korumasını atlatır.
Birkaç sayı verildiğinde, z3 kullanarak ilk sayı ile çarpıldığında ikinci sayıyı verecek yeni bir sayı bulun:
Parolanın boyutunu saklamak için yalnızca 1B kullanıldığı için, bunu taşırmak ve uzunluğunun 4 olduğunu düşünmesini sağlamak mümkündür, oysa aslında 260'dır ve bu da uzunluk kontrol korumasını atlatır ve yığında bir sonraki yerel değişkeni üzerine yazarak her iki korumayı da atlatır.
Bu ARM64'te değişmez; bu blog yazısında görebilirsiniz.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)