Pensa a un server come a un normale computer, con la differenza che espone uno o più servizi, utilizzabili da chiunque su internet che ne conosca l'indirizzo.
Questi servizi seguono protocolli ben definiti: un sito web si aspetta richieste in un formato specifico e risponde html visibile dal browser, un videogame online aspetta i dati in un formato del tutto diverso per ottimizzare la velocità. L'arte di trovare vulnerabilità in questi servizi si chiama exploitation, e ci sono tante classi di vulnerabilità, alcune le abbiamo già citate come la SQL Injection, poi ci sono bug logici (il servizio mi permette di fare qualcosa che non dovrei seguendo semplicemente un percorso che il dev non ha immaginato), c'è la memory corruption e tanti altri legati alle varie tecnologie.
Questi servizi seguono protocolli ben definiti: un sito web si aspetta richieste in un formato specifico e risponde html visibile dal browser, un videogame online aspetta i dati in un formato del tutto diverso per ottimizzare la velocità. L'arte di trovare vulnerabilità in questi servizi si chiama exploitation, e ci sono tante classi di vulnerabilità, alcune le abbiamo già citate come la SQL Injection, poi ci sono bug logici (il servizio mi permette di fare qualcosa che non dovrei seguendo semplicemente un percorso che il dev non ha immaginato), c'è la memory corruption e tanti altri legati alle varie tecnologie.