In attacks on programs, such as stack buffer overflows, what is the objective of the attacker? I’m having trouble learning the technical details of the attack (such as overwriting the function’s return address) because it’s not clear what such attacks are intended to achieve.
Sono concepiti per ottenere l'esecuzione di codice in modalità remota. Ciò significa che vogliono eseguire il codice nel tuo programma traboccando l'input previsto. Devi sempre verificare che il tuo input corrisponda alla lunghezza corretta.
Diamo un'occhiata da una prospettiva diversa: controllo della mente . E se potessi controllare la mente di qualcuno per fare ciò che vuoi che facciano?
Diciamo che c'è un exploit nel cervello di qualcuno dove possono solo prendere comandi di 8 caratteri. Qualsiasi cosa al di fuori di ciò viene eseguita perché non viene controllata.
Tu: Ciao. Per favore rispondi con "Ciao ..." ["Hello..." is 8 characters]
Vittima: Uhm, okay. Ciao ... [brain is only capable of processing 8 characters]
Tu : ti preghiamo di rispondere con "Cake".
Vittima: Uh, "Torta".
Tu: come su "Ciao ... <shellcode to make them say "Buffalo!", beyond the original 8 character limit>
"
Vittima: Ciao ... Buffalo!
Vittima: Aspetta, cosa mi hai appena fatto?
Tu : come stai gentiluomini! Tutti i tuoi bufali appartengono a noi.
E se "Buffalo!" shellcode è stato progettato per eseguire qualsiasi tipo di codice che desideri, ad esempio il download di RAT
?
For example, in SQL injection, it’s usually done to get confidential information or make the server run code. It seems like the prerequisite for a buffer overflow attack is for the attacker to already have the ability to run code on the machine, so what more do they want?
Poiché il buffer overflow, come qualsiasi altro tipo di exploit che consente l'esecuzione di codice in modalità remota, di solito è il risultato di un difetto nel codice di qualcun altro. Come l'iniezione SQL, si sta tentando di far eseguire al codice la macchina remota.
Potrebbe essere qualcosa di semplice come inviare un comando errato a un programma normale. Potresti anche implementare vulnerabilità intenzionali nei tuoi programmi. Alcuni individui meno che scrupolosi possono farlo.
Ci sono molte vulnerabilità RCE in varie lingue. Il trucco è trovare qualcosa - qualsiasi cosa - che ti permetta di eseguire codice / comandi sul target in questione che apre ulteriori opportunità per ottenere un ulteriore accesso.