Te voy a poner la explicacion que da RaiSe (Undersec) en su documento "Shellcodes en Linux I"
-------------------------------------------
Una shellcode es basicamente una serie de ordenes en ensamblador que hace al-
go de la cual sacamos provecho; ejecutar /bin/sh para obtener una shell, co-
piar una shell y setearla con suid root, etc. Tiene unas caracteristicas de
programacion un tanto especiales que luego veremos en detalle.
Se usa para conseguir ejecutar un codigo despues de haber sobreescrito la di-
reccion de retorno de un programa/funcion mediante un overflow, o mediante
cualquier otro metodo valido. Es decir, el valor de la direccion de retorno
que se sobreescribira sera la de nuestra shellcode. No me meto mucho en esto
porque la finalidad de este texto no es como programar un xploit de buffer
overflow, sino una shellcode. Simplemente decir que cuando se produzca el
desbordamiento y el salto se ejecutara nuestra shellcode.
------------------------------------------------------
Nota: Lo de ejecutar bin/bash, setuid(0), etc.... es en linux/Unix. Las shellcodes para windows (se construyen, obviamente, de distinta forma) hacen "otras cosas" como ejecutar cmd.exe (shell MSDOS), descargar y ejecutar algo silenciosamente (como un troyano), añadir un usuario definido por el "hacker" como administrador del sistema, etc etc...
Si tienes mas dudas, despues de esta explicacion, nos las comentas.
Mas info:
www.undersec.comwww.shellcode.com.arSalu2