Это связано с атакой с разбивкой стека.
По сути, я пытаюсь разбить стек, предоставляя программе определенный ввод. Программа принимает пользовательский ввод, как это, используя getchar
:
for (i = 0; (c = getchar()) != '\n'; i++) buf[i] = c;
Я хочу перезаписать память, чтобы стать 0x000000a1
. К сожалению, 0xa1
не является символом ascii, поэтому я не могу просто ввести что-то вроде ¡
(перевёрнутый восклицательный знак), потому что это в итоге дает 0x0000a1c2
в памяти. Как я могу переписать значение, равное 0x000000a1
, не меняя способ обработки пользовательского ввода в программе?