Переполнение буфера на C

Не могу понять как решать задание. Имеется программа (исходный код которой приводится ниже, компилировать с ключами: -fno-stack-protector -no-pie). Вам необходимо произвести анализ программы с помощью отладчика для выяснения длины массива для ввода пароля и адреса ветки условия проверки корректности ввода пароля, которая выполняется при условии совпадения паролей. Ввести пароль (строку символов)таким образом, чтобы перезаписать адрес возврата на выясненный адрес (есть символы которые нельзя ввести с клавиатуры, поэтому можно использовать перенаправление ввода(<) при запуске программы).

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

int IsPassOk(void);
int main(void)
{
 int PwStatus;
 puts("Enter password:");
 PwStatus = IsPassOk();
 if (PwStatus == 0) {
  printf("Bad password!\n");
 exit(1);
 } else {
  printf("Access granted!\n"); // Строка для которой нужно выяснить адрес
 }
 return 0;
}

int IsPassOk(void)
{
 char Pass[12];
 gets(Pass);
 return 0 == strcmp(Pass, "test");
}

Ответы (0 шт):