Переполнение буфера - C (СИ)

Формулировка задачи:

Помогите разобраться Лабораторная с переполнением буфера Вот сам код программы и скриншот результата
#include <stdio.h>
#include <string.h>
void printff()
{
    printf("QWERTY");
}
int overflow(char *ptr)
{
    char buffer[2];
    strcpy(buffer, ptr);
    return 0;
}
int main()
{
    int a;
    char argv[1];
    int argc=2;
    if(argc>1)
    {
        overflow(&argv[1]);
    }
    printf("%d\n", printff);
    scanf("%d", a);
    return 0;
}
После ввода строки аааааааааааааааааааааааааааааааааааааааа теоретически: должна выскочить ошибка и опереполнении буфера и тому подобное запускаю exe файл на виртуалке xp sp3 компилирую на 2010 VS я хочу сделать так, чтобы в уязвимой программе моей переполнялся стэк, и я потер адресса в EIP и туда вписал свой адресс на функцию Printff, которая в итоге должна выводить строчку QWERT... выручайте

Код к задаче: «Переполнение буфера - C (СИ)»

textual
#include <stdio.h>
#include <string.h>
void printff()
{
    printf("QWERTY");
}
void overflow(char *ptr)
{
    char buffer[2];
    strcpy(buffer, ptr);
}
int main(int argc, char* argv[])
{
    int a;
    if(argс>1)
    {
        overflow(argv[1]);
    }
    printf("%d\n", printff);
    scanf("%d", &a);
    return 0;
}

8   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ