Переполнение буфера - 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... выручайте

Решение задачи: «Переполнение буфера»

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 из 5
Похожие ответы