Underc0de

Programación General => C / C++ => Códigos Fuentes => Mensaje iniciado por: mr.blood en Mayo 15, 2013, 04:01:36 PM

Título: [C] Prueba shellcodes
Publicado por: mr.blood en Mayo 15, 2013, 04:01:36 PM
Bueno, el titulo lo dice casi todo. Solo me queda decir que se usa de este modo: ./shell_prueba shellcode. Donde shellcode seria el fichero que nos devuelve el compilador de asm en binario ;).

Sin mas, el codigo es muy simple... solo carga los bytes en memoria y utiliza el buffer para ejecutar el codigo como si fuera una funcion. Si estais en ubuntu compilad con -z execstack para que no os de problemas.

#include <malloc.h>
#include <stdio.h>

int longitud(FILE *archivo);

int main(int argc, char *argv[])
{
if(argc < 2)
{
puts("Necesita un parametro");
return 1;
}
int longi, i;
char *shellcode;
FILE *archivo=fopen(argv[1], "rb");
longi=longitud(archivo);
shellcode=(char *)malloc(longi);
for(i=0;i<longi;i++)
{
shellcode[i]=getc(archivo);
}
fclose(archivo);
((void(*)())shellcode)();
free(shellcode);
return 0;
}

int longitud(FILE *archivo)
{
int longi;
fseek(archivo, 0, SEEK_END);
longi=ftell(archivo);
fseek(archivo, 0, SEEK_SET);
return longi;
}


Sa1uDoS