FORUM DARKERS

Segurança & Hacking => Penetration Tests => Topic started by: Anonymous on 06 de June , 2006, 07:35:50 AM

Title: Aula de buffer overflow
Post by: Anonymous on 06 de June , 2006, 07:35:50 AM
Tutorial escrito por ccoder aka c0d3r__ ou cppcoder
c0d3r__@hotmail.com (mailto:c0d3r__@hotmail.com)");
 
  /* Senao temos 2 argumentos mostre o uso da aplicacao e saia */
  if (argc != 3)
  {
    puts("Uso: appname ");
    return 0;
  }
 
  cCaractere = argv[1][0];
  iQuantidade = atoi(argv[2]);
 
  funcao();
 
  system("pause");
}

/* Definicao da funcao que demonstrara o buffer overflow */
void funcao(void)
{
  /* Declarado 2 buffers */
  char buf1[40], buf2[40];
 
  /* Colocamos dados dentro de buf1 */
  strcpy(buf1, "Isso eh o que sera sob-escrito"); /* Copiamos 30 bytes + NULL */
  printf("buf1 contem: %s\n", buf1);
 
  /* Agora utilizamos memset pra sobescrever buf1 na stack */
  /* buf1 - buf2 ira nos dar a distancia entre os buffers em outras palavras
  "o tamanho real de alocacao de buf1" + quantidade sera a quantidade
  de bytes que vamos preencher buf2. */
  memset(buf2, cCaractere, buf1 - buf2 + iQuantidade);
 
  /* Observamos que buf foi sob-escrito */
  printf("buf1 depois: %s\n", buf1);
 
}

Compile o codigo fonte acima, e execute o mesmo pela linha de comando dessa forma:
programa A 29

Dessa forma iremos sob-escrever buf2 e chegar ate buf1 com A's e sob-escrever buf1 com
29 A's

Observe os diagramas abaixo para maior entedimento:

Primeiro vamos ter

<--- STACK CRESCE PRA TRAZ, OU SEJA ENDERECOS MENORES                
BUF2                                     BUF1                                            4096
+-----------------------------------------+------------------------------------------+-----+
|NAO-INICIALIZADO                |Isso eh o que sera sob-escrito  |...  |
+-----------------------------------------+------------------------------------------+-----+

Depois de menset()

<--- STACK CRESCE PRA TRAZ, OU SEJA ENDERECOS MENORES       
            
BUF2                                     BUF1                                           4096
+-----------------------------------------+------------------------------------------+-----+
|AAAAAAAAAAAAAAAAAAAAA|AAAAAAAAAAAAAAAA           |...   |
+-----------------------------------------+------------------------------------------+-----+

Como viram no exemplo de buffer overflow eh possivel sob-escrever um buffer e alcancar
 outras areas na memoria, a pergunta agora serah e se sob-escrevemos buf1 a ponto de
alcancar a area desconhecida ateh agora, que eh os ...

Teriamos algo, como segmentation fault, ou access violation no windows, facam seus testes
sabendo que o buffer tem no minimo 40 bytes tentem chamar o programa assim:

programa A 200

Vera que teremos uma crash, pq corrompemos a area ... da stack.

Abracos ateh a proxima, sugestoes, comentarios, duvidas, escrevam ai.
Title: Re: Aula de buffer overflow
Post by: Anonymous on 06 de June , 2006, 07:37:08 AM
No textarea os diagramas ficaram alinhados mas na visualizacao nao ficaram, droga!
Title: Re: Aula de buffer overflow
Post by: slul on 06 de June , 2006, 07:51:26 AM
amigo meus parabens pelo tutorioal fico mto contente que vc ao inves de ficar c]discutin]do com o apoca faça tutoriais como esse pra ajudar a galera

meus parabens!
Title: Re: Aula de buffer overflow
Post by: Anonymous on 06 de June , 2006, 03:24:49 PM
Parabens, amigo vai ajudar muita gente.. que se interresa e que não são poucos !!
Title: Re: Aula de buffer overflow
Post by: _Dr4k0_ on 06 de June , 2006, 04:18:19 PM
u.u nosso bom e nerd ccoder
;)
Title: Re: Aula de buffer overflow
Post by: Anonymous on 06 de June , 2006, 06:23:27 PM
Excelente Ccoder!!!

By ME!!
Title: Re: Aula de buffer overflow
Post by: Anonymous on 06 de June , 2006, 06:32:44 PM
Mandou bem mesmo...  ;D
Title: Re: Aula de buffer overflow
Post by: HadeS on 07 de June , 2006, 08:13:28 PM
Muito bom! Gostei, de verdade.

Parabéns.

HadeS