-fno-stack-protector не работает - PullRequest
0 голосов
/ 30 мая 2018

Я написал следующую программу на C, чтобы увидеть работу переполнения буфера.Я сохранил этот программный файл с именем bo.c

    #include<stdio.h>
    #include<string.h>

    int authentication(char *key)
    {
        int auth=0;
        char pass[10];
        strcpy(pass, key);
        if(strcmp(pass, "hello")==0)
            auth=1; 
        else
            auth=0;
        return auth;
    }

    int main(int argc, char *argv[])
    {
        if(authentication(argv[1]))
        {
            printf("----------------------------------\nACCESS  GRANTED\n---------------------------------");
}
        else
        {
            printf("Access Denied! Wrong password!");
        }
    return 0;
    }   

Но я не вижу эффекта переполнения буфера, поскольку стек защищен.Но когда я компилирую его с флагом -fno-stack-protector, он показывает, что это нераспознанная опция.

enter image description here

Что такоепроблема здесь?Я что-то не так делаю при использовании команды gcc ?

1 Ответ

0 голосов
/ 30 мая 2018

Вы правильно выполнили команду, но она не была обработана из-за вашей конфигурации.

gcc -fno-stack-protector bo.c

Я бы порекомендовал переустановить gcc или попробовать другой дистрибутив Linux.Также не стесняйтесь читать эту статью о использовании -fno-stack-protector , так как это дает некоторое представление о том, почему она может быть отключена.(Выполните возможные конфигурации с Makefile, отключив флаг)

-------- Edit ----------

После более подробного изучения я хотел бырекомендую посмотреть: -fstack-protector-all или -fstack-protector

Я возился с вашим кодом и обнаружил, что это может быть тем, что вы пытаетесь сделать, и ваша текущая настройка может это позволить.

Мой вывод CMD

...