        -=( 7A69#13 )=--=( art2 )=--=( Exploit-It. )=--=( Staff )=-
	

     Hay en la red una gran cantidad de documentacion sobre la explotacion 
de programas, por lo que es mas o menos sencillo adquirir una base teorica
sobre el tema. Pero los ejemplos de dichos documentos suelen ser muy
simples y poco se asemejan a la realidad, y es quiza por ello por lo que
hay realmente poca gente capaz de autidar codigo. Quiza sin la intencion de
solventar esto, la gente de core-sgi publico una serie de codigos 
vulnerables para que gente de todo el mundo puediera auditarlos y programar
los correspondientes exploits. Si bien esos codigos publicados son 
buenisimos ejemplos para cada uno de los tipos de explotacion no dejan de
ser codigos simplones y por lo general faciles de explotar (si conoces la
tecnica a aplicar). Por ese motivo en 7a69 hemos decidido iniciar esta
seccion, Exploit-it, que pretende ser un concurso de explotacion a 
programas vulnerables que nostros presentaremos. Como en todo concurso habra 
un premio al primero que logre explotar cada una de los programas que nosotros 
presentaremos. Aun no hemos decido que sera el premio, por lo que el ganador
se enterar en el proximo numero (no os espereis un premio gordo, estilo un
viaje a finlandia o un palm porque no lo va a ser :)

    A continuacion podeis ver el codigo de exploit-it-1.c programado por
Ripe (ripe@7a69ezine.org), que sera el que debeis auditar. Este primer codigo 
vulnerable no presenta demasiadas complicaciones, sinembargo intentaremos que 
el nivel de los codigos vulnerables aumente progresivamente, de manera que 
vosotros mismos podais evaluaros. Ademas tambien interaremos que no todos
los programas vulnerables sean en C, asi que podreis encontrar cosas en perl,
phyton, o cualquier otrp lenguaje.

---/ exploit-it-1.c /---

/*
 * exploit-it-1.c 
 *
 * Ripe - <ripe@7a69ezine.org>
 *
 * NOTA: No se permite la ejecucion de ficheros que se encuenten fuera de
 *       los tipicos directorios del PATH, a exepcion del exploit y el
 *       programa vulnerable.
 *
 *       Suerte :)
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <getopt.h>

extern char *optarg;
extern int optind, opterr, optopt;

int view_help(char *cmd) {
  printf("Uso:\n");
  printf("\t%s <buffer> [Opciones]\n", cmd);
  printf("Opciones:\n");
  printf("\t-b <size>\tTamaqo del buffer a pasar a echo/printf\n");
  printf("\t-t <P/E>\tP para usar printf, y E para usar echo\n");
  exit(0);
}

int main(int argc, char **argv) {
  unsigned short int size=16;
  char bcp[128];
  int type=1;
  char ch;
  char *ptr;
  char *filename;
  char *exec_argv[3];
  printf("Exploit-it 0x01 by Ripe - <ripe@7a69ezine.org>\n");
  if (argc<2) view_help(argv[0]);
  memset(bcp, 0, 128);
  while ((ch=getopt(argc-1, &argv[1], "b:t:"))!=EOF) {
    switch (ch) {
      case 'b': size=atoi(optarg);
                break;
      case 't': if (optarg[0]=='P') type=1;
                if (optarg[0]=='E') type=2;
                break;
    }
  }
  exec_argv[0]="exploit-it";
  exec_argv[1]=(char *)malloc(size);
  exec_argv[2]=NULL;
  strcpy(bcp, argv[1]);
  if (type=1) {
    filename=malloc(strlen("/usr/bin/printf")+1);
    memset(filename, 0, strlen("/usr/bin/printf")+1);
    strcpy(filename, "/usr/bin/printf");
  } else {
    filename=malloc(strlen("/bin/echo")+1);
    memset(filename, 0, strlen("/bin/echo")+1);
    strcpy(filename, "/bin/echo");
  }
  strncpy(exec_argv[1], argv[1], size);
  execve(filename, exec_argv, NULL);
  printf("Counldn't execute %s\n", filename);
  exit(1);
}

---/ exploit-it-1.c /---

Que tengais suerte... nos vemos con la solucion y un source vulnerable mas
en el proximo numero.

*EOF*
