Compito:
Leggete attentamente il programma in allegato. Viene richiesto di: Descrivere il funzionamento del programma prima dell’esecuzione
Riprodurre ed eseguire il programma nel laboratorio - le vostre ipotesi sul funzionamento erano corrette?
Modificare il programma affinché si verifichi un errore di segmentazione
Suggerimento: Ricordate che un BOF sfrutta una vulnerabilità nel codice relativo alla mancanza di controllo dell’input utente rispetto alla capienza del vettore di destinazione. Concentratevi quindi per trovare la soluzione nel punto dove l’utente può inserire valori in input, e modificate il programma in modo tale che l’utente riesca ad inserire più valori di quelli previsti.
#include <stdio.h>
int main () {
int vector [10], i, j, k;
int swap_var;
printf ("Inserire 10 interin");
for ( i = 0 ; i < 10 ; i++)
{
int c= i+1;
printf("[%d]:", c);
scanf ("%d", &vector);
}
printf ("Il vettore inserito e'n");
for ( i = 0 ; i < 10 ; i++)
{
int t= i+1;
printf("[%d]: %d", t, vector);
printf("\n");
}
for (j = 0 ; j < 10 - 1; j++)
{
for (k = 0 ; k < 10 - j - 1; k++)
{
if (vector[k] > vector[k+1])
{
swap_var=vector[k];
vector[k]=vector[k+1];
vector[k+1]=swap_var;
}
}
}
printf("Il vettore ordinato e'n");
for (j = 0; j < 10; j++)
{
int g = j+1;
printf("[%d]:", g);
printf("%d\n", vector[j]);
}
return 0;
}
Leggete attentamente il programma in allegato. Viene richiesto di: Descrivere il funzionamento del programma prima dell’esecuzione
Riprodurre ed eseguire il programma nel laboratorio - le vostre ipotesi sul funzionamento erano corrette?
Modificare il programma affinché si verifichi un errore di segmentazione
Suggerimento: Ricordate che un BOF sfrutta una vulnerabilità nel codice relativo alla mancanza di controllo dell’input utente rispetto alla capienza del vettore di destinazione. Concentratevi quindi per trovare la soluzione nel punto dove l’utente può inserire valori in input, e modificate il programma in modo tale che l’utente riesca ad inserire più valori di quelli previsti.
#include <stdio.h>
int main () {
int vector [10], i, j, k;
int swap_var;
printf ("Inserire 10 interin");
for ( i = 0 ; i < 10 ; i++)
{
int c= i+1;
printf("[%d]:", c);
scanf ("%d", &vector);
}
printf ("Il vettore inserito e'n");
for ( i = 0 ; i < 10 ; i++)
{
int t= i+1;
printf("[%d]: %d", t, vector);
printf("\n");
}
for (j = 0 ; j < 10 - 1; j++)
{
for (k = 0 ; k < 10 - j - 1; k++)
{
if (vector[k] > vector[k+1])
{
swap_var=vector[k];
vector[k]=vector[k+1];
vector[k+1]=swap_var;
}
}
}
printf("Il vettore ordinato e'n");
for (j = 0; j < 10; j++)
{
int g = j+1;
printf("[%d]:", g);
printf("%d\n", vector[j]);
}
return 0;
}