Problema con Memset

Iniciado por Blackhawk222, 15 Enero 2011, 07:57 AM

0 Miembros y 1 Visitante están viendo este tema.

Blackhawk222

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
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...

Blackhawk222

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
char nops[228];
antes de
char nops[76];

Ahora funciona bien...

Garfield07

¿? Por que 228? No tiene ningun sentido... :P
Mira asi, porque no le veo sentido... A ver que usas para ver los nops...  :¬¬

#include <string.h>

int main ()
{
char nops [76];
memset (nops, '\x90', 76);
puts (nops);
}


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


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Eternal Idol

Mejor usa sizeof en lugar del tamaño.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Garfield07

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...
Cita de: Blackhawk222 en 15 Enero 2011, 08:21 AM
char nops[228];
antes de 
char nops[76];

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


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Eternal Idol

sizeof es un operador y (practicamente siempre) se resuelve en tiempo de compilacion.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Garfield07

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?


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo