В рамках моего задания я должен продемонстрировать stackoverflow в своей Linux-системе.
Конфигурация моего ящика: ОС: Ubuntu 13.04
Версия GCC: 4.6.3
Я попытался скомпилировать программу с флагом -fno-stack-protector, программа успешно соблюдается, но ошибка сегментации появляется, когда я запускаю переполнение стека. Как я могу показать фактическое o/p. Буфер перерасхода Pgm:
int main(int argc, char**argv)
{
int authentication=0;
char cUsername[10], cPassword[10];
strcpy(cUsername, argv[1]);
strcpy(cPassword, argv[2]);
if(strcmp(cUsername, "admin") == 0 && strcmp(cPassword, "adminpass") == 0)
{
authentication = 1;}
if(authentication)
{
printf("Access granted");}
else
{
printf("Wrong username and password");
}return 0;}
Если я даю IP-адрес типа AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAаааааааааааааааааааааааааа будет
void foo() {foo();}
. Это даст вам переполнение стека. - person Jabberwocky   schedule 03.02.2014