Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Blackhawk222 en 15 Enero 2011, 07:57 am



Título: Problema con Memset
Publicado por: Blackhawk222 en 15 Enero 2011, 07:57 am
Hola a todos estoy creando un exploit para aprender el uso de los buffer overflow y me encontre con un problema sobre la programacion del mismo.
Resulta que tengo una variable llenarla de el caracter \x91, mas exacto poner 76 veces ese caracter.
Lo que hago es lo siguiente...

INICIO DE CODIGO
Código:
char nops[76];
memset(nops,'\x90',76);

El problema es que agrega al final de la variable tres caracteres mas que necesito que no esten, estos son los caracteres ↑♥>

Alguna idea sobre la solucion?

Gracias...


Título: Re: Problema con Memset
Publicado por: Blackhawk222 en 15 Enero 2011, 08:21 am
Ja Ja Ja  :laugh:
El problema ya lo encontre resulta que me olvide que las variables en c++ se miden por bytes la cosa era poner
Código:
char nops[228];
antes de
Código:
char nops[76];

Ahora funciona bien...


Título: Re: Problema con Memset
Publicado por: Garfield07 en 15 Enero 2011, 13:26 pm
¿? Por que 228? No tiene ningun sentido... :P
Mira asi, porque no le veo sentido... A ver que usas para ver los nops...  :¬¬
Código
  1. #include <string.h>
  2.  
  3. int main ()
  4. {
  5. char nops [76];
  6. memset (nops, '\x90', 76);
  7. puts (nops);
  8. }
  9.  

Tu declaras dos veces nops, eso daria error, no se entiende nada....
¿Que funcion usas para imprimir?


Título: Re: Problema con Memset
Publicado por: Eternal Idol en 16 Enero 2011, 21:05 pm
Mejor usa sizeof en lugar del tamaño.


Título: Re: Problema con Memset
Publicado por: Garfield07 en 17 Enero 2011, 10:40 am
Cierto sera siempre mas correcto, pero yo prefiriria usar cuantas menos llamadas a otras funciones mejor no? En este caso no importa, pero en otras cosas si podria cambiar :P
Aun asi sigo con la duda...
Código:
char nops[228];
antes de 
Código:
char nops[76];

Ahora funciona bien...
Pues no deberia...


Título: Re: Problema con Memset
Publicado por: Eternal Idol en 17 Enero 2011, 11:06 am
sizeof es un operador y (practicamente siempre) se resuelve en tiempo de compilacion.


Título: Re: Problema con Memset
Publicado por: Garfield07 en 17 Enero 2011, 11:20 am
Ahh oks pues entonces habra que cambiar la practica :P pero como he dicho antes en este caso no importa...
Y ahora como es mi duda?