supponga che ho un codice avente Buffer Overflow come seguendoÈ possibile sfruttare una funzione vulnerabile se il suo input è sicuro?
int func(const char *str){
char buffer[100];
unsigned short len = strlen(str);
if(len >= 100){
return -1;
}
strncpy(buffer,str,strlen(str));
return 0;
}
(presi da questo question)
C'è un modo per sfruttare questa vulnerabilità se ricevendo input da un'altra funzione (non input dell'utente) e la lunghezza di str è sempre inferiore a 100?
Per esempio
int main() {
int user_input;
if (cin >> user_input) {
if(user_input == 1)
func("aaaa");
else
func("bbbb");
}
}
Assumere non c'è altra vulnerabilità nel codice.
Solo una domanda ipotetica, qualche idea?
Se la lunghezza di str è sempre inferiore a 100, non c'è vulnerabilità. –
@AntonSavin Quindi i codici che non ricevono l'input dell'utente sono sempre sicuri se sono in esecuzione? – smttsp
Non vedo il motivo di 'if (len> = 100)' se sei sicuro che 'len' sarà sempre inferiore a 100 –