Определение Stack Smashing, опубликованное по адресу: https://www.techopedia.com/definition/16157/stack-smashing
Definition - Что означает Stack Smashing?
* Stack Smashing - это форма уязвимости, когда стек компьютераприложение или ОС вынуждены переполняться.Это может привести к подрыву программы / системы и ее поломке.
Стек, схема «первым пришел - последним вышел», является формой буфера, содержащего промежуточные результаты операций внутри него.Чтобы упростить, разбить стек, поместив в стек больше данных, чем его емкость.Опытные хакеры могут сознательно вводить избыточные данные в стек.Избыточные данные могут храниться в других переменных стека, включая адрес возврата функции.Когда функция возвращается, она переходит к вредоносному коду в стеке, который может повредить всю систему.Это влияет на смежные данные в стеке и вызывает сбой программы. *
относительно:
char divStatement[] = " is divisible by ";
и
strcat(divStatement, "31, ");
Вызов strcat()
пытаясь добавить строку: «31» к массиву, который является достаточно большим, чтобы содержать строку: «делится на».В результате массив переполняется.Такое переполнение является неопределенным поведением.В этом случае он повредил стек, вероятно, прямо там, где расположен какой-либо кадр стека или другая связь