2015-04-15 2 views
0

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

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

ответ

0

Если мы говорим в общих чертах об эксплойтах, ошибках кодирования или плохо управляемых входах, может быть источником уязвимостей безопасности, все, что вы сказали, истинно, но вы пропустили основную причину уязвимостей.

Затем вы должны сделать выполнение возврата программы в эту точку памяти, правильно?

Это нормальный способ использования, но использование заключается в том, чтобы использовать программу злонамеренно, а не как «приятные» пользователи. Проверьте эту статью в вики, чтобы получить представление о exploiting BOF. Другое замечательное объяснение с c programming.