Per comprendere meglio l'overflow del buffer, posso suggerire questo sito . Contiene una spiegazione estremamente chiara, ma non spiega come sfruttare la strana situazione che si verifica dopo l'overflow.
Nonostante ciò, il seguente sito spiega meglio.
Prima di leggere le guide, si prega di prestare attenzione a queste poche indicazioni:
La memoria è divisa in segmenti e ogni segmento è diviso in voci situate a un certo offset all'interno dello stesso segmento: ogni elemento del segmento è accessibile alla posizione iniziale (offset) più l'allocazione di memoria per ogni tipo di oggetto (quanti byte sono necessari per allocare l'oggetto nel segmento di memoria), quindi è necessario essere consapevoli di ciò che significa "errore di segmentazione" e non uscire MAI dai limiti nelle tecniche di programmazione.
La seconda guida utilizza due tipi di sistema operativo: Linux e Windows; La dualità è estremamente importante, perché vedrai che l'offset del puntatore delle istruzioni ( 0x7c9d30d7
) viene scritto in ordine inverso nella codifica degli exploit ( buff = 'x90'*230+'xd7x30x9dx7c'+'x43'*366
).
L'obiettivo è un server FTP che è vulnerabile allo stack overflow, ma il concetto dietro le quinte è lo stesso in caso di scrittura ed esecuzione di un piccolo script C con input da tastiera, come proposto.
Alla fine della guida, l'attaccante ascolta sulla porta TCP 443 su host Linux e riceve un prompt della shell (l'exploit in reverse shell) da un host Windows (il server FTP vulnerabile).
A causa di queste guide, dovresti capire la frase che ho scritto: "Fai fare al software qualcos'altro che è stato originariamente programmato con i dati di input"
Come consiglio, posso suggerirti di iniziare sulla prima guida, poi passare al secondo e tornare al primo, solo per capire i passaggi forse oscuri.
Secondo una prospettiva hacker, XSS, RFI o anche SQL sono tutti di scarso interesse;
Il linguaggio SQL, ad esempio, è utile per recuperare (o modificare dati) da un database utilizzando la logica booleana.
Quando è necessario ottenere informazioni su tabelle, colonne e record, si passano le condizioni al motore SQL come parametri; Questi parametri vengono confrontati con la logica di AND, OR, NOT.
Immaginate di aggiungere (iniettare) un nuovo parametro (la sintassi deve essere corretta) a un'istruzione SQL predefinita, in cui la condizione risultante è sempre vera rispetto a quella originale limitata; In tal modo, puoi bypassare la restrizione.
È tutto, estremamente semplice, non sono necessarie tecniche o abilità di hacking.
A proposito, un exploit come NSA EternalBlue (e derivati) è molto apprezzato, perché sovrascrive parte del processo di autenticazione (challenge-response), si collega alle risorse senza password specificata e inietta un nuovo codice usando un canale di comunicazione interprocesso nascosto su SMBv1 macchine Windows senza patch.