Мне интересно, как можно выполнить произвольный код на локальном компьютере, вызвав переполнение буфера. Я думаю, что функции, выполняемые системным API, выполняются с повышенными привилегиями, поэтому вам придется заставить его переходить к собственному коду и выполнять его, поэтому
Выделите X байтов в памяти и скопируйте в него некоторое количество <= X кода. Мы хотим запустить этот шелл-код с повышенными привилегиями. </p>
Выделите количество байтов в памяти Y и скопируйте в него нули Y (или что-либо еще), а также расположение в x, чтобы перезаписать адрес следующей инструкции в стеке.
Пусть функция (скажем, memcpy) продолжит работу, и она должна выполнить наш код в X (с повышенными привилегиями) (я полагаю, что перед замораживанием, если мы не добавим отскок назад в нашу программу в конце нашего кода) в X.
Это кажется действительно простым и небезопасным. Существует ли какая-либо система (в Windows), защищающая от этого, или она вообще не работает?