Переполнение буфера - C (СИ)
Формулировка задачи:
Помогите разобраться
Лабораторная с переполнением буфера
Вот сам код программы и скриншот результата
После ввода строки аааааааааааааааааааааааааааааааааааааааа теоретически: должна выскочить ошибка и опереполнении буфера и тому подобное
запускаю exe файл на виртуалке xp sp3
компилирую на 2010 VS
я хочу сделать так, чтобы в уязвимой программе моей переполнялся стэк, и я потер адресса в EIP и туда вписал свой адресс на функцию Printff, которая в итоге должна выводить строчку QWERT...
выручайте
#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; }
Решение задачи: «Переполнение буфера»
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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д