Я прочитал 5 статей / статей и 2 видео о переполнении буфера стека и переполнении кучи. Я написал программу, которая была уязвима, переполнена и использовала ее, запустил сервер на порту 7777, который был уязвим, переполнился и использовал его. Но я не понимаю, как найти уязвимости в Windows (или других операционных системах) или программном обеспечении. Я использовал gcc и gdb для отладки, чтобы найти все, что мне нужно для написания эксплойта. Как найти уязвимости, связанные с переполнением буфера стека в других программах / программном обеспечении, и как отладить уязвимую программу или можно использовать gdb?
Обнаружение переполнения буфера стека
Ответы (1)
Существует два основных подхода к обнаружению переполнения буфера стека:
Тестирование черного ящика Ключом к тестированию приложения на уязвимости переполнения стека является предоставление слишком больших входных данных по сравнению с ожидаемыми. Однако обработки приложения произвольно большими данными недостаточно. Становится необходимым проверить поток выполнения приложения и ответы, чтобы убедиться, действительно ли произошло переполнение или нет. Следовательно, шаги, необходимые для обнаружения и проверки переполнения стека, заключаются в том, чтобы присоединить отладчик к целевому приложению или процессу, сгенерировать искаженный ввод для приложения, подвергнуть приложение искаженному вводу и проверить ответы в отладчике. Отладчик позволяет тестировщику просматривать поток выполнения и состояние регистров при срабатывании уязвимости.
Тестирование серого ящика Просмотрите код вручную (разберите его). При просмотре кода на предмет переполнения стека рекомендуется искать вызовы небезопасных библиотечных функций, таких как gets (), strcpy (), strcat () и т. Д., Которые не проверяют длину исходных строк и слепо копируют данные в буферы фиксированного размера. Помимо ручного просмотра кода на предмет переполнения стека, инструменты статического анализа кода также могут оказать большую помощь. Хотя они, как правило, генерируют множество ложных срабатываний и едва ли могут обнаружить небольшую часть дефектов, они, безусловно, помогают сократить накладные расходы, связанные с поиском низко висящих ошибок, таких как ошибки strcpy () и sprintf (). Для анализа языков C-стиля доступны различные инструменты, такие как RATS, Flawfinder и ITS4.
Лучшие инструменты для этого тестирования: OllyDbg и IDA Pro (для статической и динамической отладки).