Windows XP Service pack 2 представил несколько нововведений для защиты от
перезаписи заголовков динамической памяти. Этот метод эксплуатации переполнения
динамической памяти и защита от него, предлагаемая вторым сервис паком широко
известна и ранее отлично описана. В этом документе будет сделана попытка
объяснения того, как можно использовать другую функциональность управления
динамической памятью для контроля выполнения кода после перезаписи заголовка.
Методы, описанные в этом документе, не являются общепринятыми. Они специфичны
для каждого уязвимого приложения и ситуации переполнения динамической памяти.
Хотя существует большая вероятность того, что эти методы не смогут быть
использованы в реальных сценриях.
В этом документе рассматривается эксплуатация перезаписи freelist[0] посредством
двух новых методов. Первый метод позволит записать адрес входных данных в
произвольную ячейку памяти. Второй метод позволит вернуть произвольный адрес
функции HeapAlloc.