Я пытаюсь, как часть упражнения, использовать простую программу, перезаписывая значение переменной через переполнение буфера.Я почти уверен, что у меня есть идея, лежащая в основе эксплойта, но так как я не могу внедрить свой код, я не могу знать наверняка.
Я попытался создать скрипт, который использует Pwntools, что хорошодля упаковки целых чисел, но мне не удалось заставить его работать.Я также попытался прочитать о TTY и о том, как вы можете манипулировать тем, что терминал отправляет процессу.
Простой псевдокод программы, которую я использую:
returnFlag() {
print(flag)
}
main() {
char[8] = input
id = 999999
input = fgets()
if (id = 0) {
returnFlag()
}
}
Мой план состоит в том, чтобы переполнить переменную input и перезаписать значение id на 0, чтобы функция returnFlag () былаказнены.Но когда я, например, ввожу «AAAA \ x00 \ x00 \ x00», я получаю тарабарщину только тогда, когда смотрю на память с помощью GDB.
Эта проблема сводила меня с ума в течение последних 1,5 недель и любой помощибудет принята с благодарностью.