Я пытаюсь продемонстрировать переполнение буфера через индекс массива (когда нет проверки границ). Я пытаюсь изменить bool authenticated = false
на true, передав неправильное значение.
Я использую GCC 4.8.5
arrayVulnerability(int size)
{
int array[4];
bool authenticated = false;
for (int i = 0; i < size; i++)
{
array[i] = size;
}
}
Насколько я понимаю, моя память настроена следующим образом:
Я надеялся, что, передав int
больше 4, я смогу переписать эту позицию в true, но она не работает. Мне любопытно, неправильно ли поняли мою память или я что-то упустил?
Edit:
Я распечатал места как предложено и получил следующее:
bool authenticated = 0x7ffc4741612f
array[0] = 0x7ffc47416130
array[1] = 0x7ffc47416134
array[2] = 0x7ffc47416138
array[3] = 0x7ffc4741613c
array[4] = 0x7ffc47416140
Похоже, что bool authenticated
до того, как мой массив и моя память были неверны. Однако я все еще не понимаю, почему это происходит до моего массива.