Как злоумышленники могут получить удаленный доступ с помощью таких эксплойтов, как переполнение буфера? Я слежу за книгой «Искусство эксплуатации», но у меня возникают проблемы, обертывающие голову вокруг определенных предметов. Я предполагаю, что единственная вещь, которую прослушивающая программа может принимать от кого-либо удаленно, - это аргументы программы? Поэтому любой удаленный код, который они хотят выполнить программе, должен быть помещен в программу через аргумент, который затем существует в памяти. Затем вы должны заставить программу вернуть выполнение этой точки в памяти, правильно?Как работают удаленные программы?
Так что, если все предыдущие теории верны, мне интересно, как люди делают эксплойты, которые почти работают каждый раз, когда оптимизация компилятора варьируется от системы к системе (плюс рандомизация адреса и т. Д.) И как, если весь эксплоит делает вызов программы с сгенерированным буфером, не могли ли вы буквально использовать программы, вызывая программы со скопированной/вставленной строкой, состоящей из кода эксплойта (с nop sled, а затем с шелкодеком или что-то еще)?