Leí en alguna parte que este tipo de ataques son susceptibles a direcciones que son más altas y no más bajas en la pila / montón / búfer. ¿Por qué es esto?
Se debe a cómo se almacenan los datos en la memoria.
Cuando es necesario hacer referencia a un objeto de datos más grande que un solo byte, los programas lo hacen recordando la dirección del primer byte, más (de alguna manera) el tamaño del objeto. Ese primer byte se coloca (por convención) en la dirección de valor más bajo del espacio disponible, y como resultado, cualquier desbordamiento saldrá del extremo de dirección superior.
Lea otras preguntas en las etiquetas attacks