Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Belial & Grimoire en 11 Mayo 2012, 04:26 am



Título: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Belial & Grimoire en 11 Mayo 2012, 04:26 am
hola

tengo un codigo de un tutorial sobre exploits, pero no logro saber porque no me funciona

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(){
  5.  
  6. int array[5];
  7. int i;
  8.  
  9. for (i = 0; i <= 255; i++){
  10.  
  11.   array[i] = 10;
  12.  
  13. }
  14.  
  15. }

el codigo en si, funciona bien, pero supuestamente al compilarlo tendria que salir de esta forma

Código
  1. shellcoders@debian:~/chapter_2$ cc buffer2.c
  2. shellcoders@debian:~/chapter_2$ ./a.out
  3. Segmentation fault (core dumped)

sin embargo, cuando lo hago no me aparece

Código:
gazette@gazetto:~/ejercicios$ ./a.out
gazette@gazetto:~/ejercicios$

creen que podria ser por el compilador, utilizo gcc-4.6 y este tutorial es del 2007 creo todavia se usaba gcc-3.xx, pero no tengo idea si es por el compilador que tengo un resultado diferente o porque mas podria ser?

en la pagina de gnu solo esta la version gcc-3.2 pero no se si intentar instalarlo o si eso no tiene nada que ver

lo supuse porque AlbertoBSD en un tutorial explica las diferencias entre gcc-4 y gcc-3 al crear un exploit

espero me puedan ayudar, salu2



Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: durasno en 11 Mayo 2012, 07:07 am
Hola! lo mas probable es q si sea por el compilador. De echo he visto a varios que crean un bucle parecido(pero no con el proposito q vos qres) y se ejecuta perfectamente. De todas formas deberias postear esto en la parte de hack, algo asi, q tiene esta misma pagina para q te ayuden mejor

Saludos


Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Slava_TZD en 11 Mayo 2012, 09:11 am
Tu array solo tiene 5 elementos, sin embargo intentas acceder y asignerle un valor a 250 elementos que no existen en el array. Con gcc versión 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) da el fallo que tiene que dar de la otra manera...

Código
  1. for (i = 0; i <= sizeof(array)/sizeof(int); i++){
  2.  
  3.   array[i] = 10;
  4.  
  5. }
  6.  





Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Don Pollo en 11 Mayo 2012, 17:08 pm
Tu array solo tiene 5 elementos, sin embargo intentas acceder y asignerle un valor a 250 elementos que no existen en el array. Con gcc versión 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) da el fallo que tiene que dar de la otra manera...

Código
  1. for (i = 0; i <= sizeof(array)/sizeof(int); i++){
  2.  
  3.   array[i] = 10;
  4.  
  5. }
  6.  





Está hablando de exploits. Ya sabe que debe dar el fallo, lo que pasa es que no se lo muestra.


Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Eternal Idol en 11 Mayo 2012, 17:37 pm
Aumenta el 255 ese hasta que falle ...


Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Belial & Grimoire en 11 Mayo 2012, 23:15 pm
hola gracias por responder, pero no lo consigo

Código:
#include <stdio.h>
#include <string.h>

int main(){

int array[5];
int i;

for (i = 0; i <= 4990; i++){

   array[i] = 10;
   
}

}

Citar
gazette@gazetto:~/ejercicios$ gcc -o arrar_for arrar_for.c --no-stack-protector -g -z execstack
gazette@gazetto:~/ejercicios$ ./a.out
gazette@gazetto:~/ejercicios$

Creen que si seria conveniente que instale gcc-3.2 y ver que pasa?, lo pregunto porque en los repositorios ya no esta y tendre que hacerlo manualmene, el problema es saber si debian lo aceptara por las actualizaciones

salu2


Título: Re: porque no puedo realizar este ejercicio?, es por el compilador?
Publicado por: Belial & Grimoire en 12 Mayo 2012, 04:49 am
use backtrack 5 use el compilador gcc-4.1

quise hacer la prueba y ahora si me funciono, el problema es que cuando lo quise volver a intentar tuve que hacer varios intentos para que me volviera a funcionar, creen que sea normal?

Código:
root@root:~/Desktop# ./a.out
Segmentation fault (core dumped)
root@root:~/Desktop# ./a.out
root@root:~/Desktop# ./a.out
root@root:~/Desktop# ./a.out
root@root:~/Desktop# ./a.out
Segmentation fault (core dumped)

talvez si es el compilador aunque aumente de 255 a 1700, pero no se si sea normal o porque saldria asi?, porque ya intente instalar en debian ( que es el que utilizo ), gcc-3.4.6 pero no se instalo hubo mucho errores y por mas tutoriales que segui me salian errores

ahorita estoy usando backtrack 5 y el ggc mas bajo es gcc-4.1