Реализовать атаку buffer overflow, написав заведомо небезопасную функцию чтения. Код программы должен содержать процедуры или функции main, input, other.
Функция main вызывает input, в которой происходит небезопасное чтение из стандартного потока ввода. Необходимо подобрать ввод, который приводит к возврату из функции input в функцию other. Функция, в которую произошёл возврат, печатает в стандартный поток вывода информацию, демонстрирующую, куда произошёл возврат. Если возврат произошёл в функцию main программа должна корректно доработать и завершиться с кодом возврата 0. Если возврат произошёл в функцию other, корректное продолжение и завершение работы программы не требуется.
Функции main и input могут печатать дополнительную информацию, поясняющую их работу.
- Код программы необходимо добавить в папку src/ и прописать путь до него при создании исполняемой цели в CMakeLists.txt. Также необходимо указать в target_compile_options все опции компилятора, которые необходимы для успешного проведения атаки. Важно! При тестировании решения компиляция будет производиться компилятором gcc 7.5.0. Запуск программы будет происходить на Ubuntu 18.04. Запуск программы будет осуществляться командой
setarch `uname -m` -R ./main
(ASLR будет отключен). - В папке test/ заполнить файлы следующим образом:
- normal_input.txt: ввод, при котором происходит возврат в main, и программа корректно завершается;
- hacker_input.txt: ввод, при котором происходит возврат в other;