Ha importanza in quale linguaggio di programmazione scrivi lo shellcode?

4

Ho cercato molto e non ho trovato nulla. Mi chiedo ancora: è importante in quale lingua scrivi shellcode? Lo shellcode in Assembly, C, ecc. Funziona ovunque possa essere usato ed è buono come l'altro?

    
posta Zlatomir Zhelev 10.12.2017 - 16:53
fonte

1 risposta

5

Il termine "shellcode" deriva dal fatto che viene tipicamente usato per ottenere l'accesso alla shell sulla macchina. Nella maggior parte dei casi, lo shellcode viene utilizzato quando esiste una vulnerabilità basata sulla corruzione della memoria (ad es. Overflow del buffer) in cui l'autore dell'attacco è in grado di scrivere su parti di memoria che verranno eseguite o che verranno eseguite. Questo deve essere codice macchina, poiché viene eseguito direttamente dalla CPU.

Poiché lo spazio sul buffer è spesso limitato, lo shellcode è spesso progettato per essere il più breve possibile, quindi viene spesso scritto a mano in assembly e scaricato in una sequenza byte sfuggita (ad esempio "\ x23 \ xa4 \ x00" ). È possibile scrivere un programma in C, compilarlo, quindi eseguire il dump dei byte come sopra, ma il compilatore C può introdurre complessità inutili e aggiungere ulteriore lunghezza. Di solito, lo shellcode sarà breve e potrebbe essere estratto da un secondo stadio dalla rete se si desidera un carico utile più lungo.

In breve, è necessario il codice macchina, e non importa se questo codice proviene da C o da un assembly, eccetto ciò che è stato detto sopra. Tuttavia, la definizione di shellcode è un po 'allentata e potrebbe essere applicata anche ai linguaggi interpretati (ad esempio ottenere una shell sfruttando una chiamata non salvata a eval () in un'applicazione Python), sebbene in genere non sia la parola scelta in questi casi.

    
risposta data 10.12.2017 - 20:15
fonte

Leggi altre domande sui tag