я экспериментировал с кодом, описанным в «кодеров Shell справочник», где переполнение буфера и вызвать один и тот же код, который будет выполняться дважды ...Дилемма с переполнением буфера
void return_input (void)
{ char array[5];
gets (array);
printf(“%s\n”, array);
}
main()
{
return_input();
return 0;
}
Задача состояла в том, чтобы заменить буфер и заменить адрес «возвращения 0» с адресом «return_input()» так, что введенная строка печатается дважды ..
я скомпилированный его следующим образом
gcc -fno-stack-protector overflow.c
т o переопределить механизмы защиты. Проблема в том, что я не могу выполнить ее дважды. в этом случае адрес функции ri() равен 0x08048440. Я дал данные следующим образом:
./a.out
aaaaaaaaaaaaa\x40\x84\x04\x08
не должен ли это вызывать функцию дважды? Он всегда возвращает
aaaaaaaaaaaaaaaa��
Segmentation fault (core dumped)
Как я могу переполнить буфер для вызова функции дважды?
@BenGreen Я стараюсь учиться сам. Если этот вопрос был задан как домашнее задание, преподаватели уже научили меня, как запустить базовый эксплойт, а затем попробовать его самостоятельно. или на английском языке - я бы не задал этот вопрос в первую очередь :) – Ray
@BenGreen тег домашней работы устарел несколько месяцев назад и теперь удален: http://meta.stackexchange.com/questions/147100/the-homework- tag-is-now-официально-derecated – l4mpi