Sockets,printf y datos provenientes de la red...por que esta vulnerabilidad?

Iniciado por 4rkn63l, 21 Diciembre 2010, 02:29 AM

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

4rkn63l

Muy buenas, que tal todos!

Estaba leyendo el libro "TCP/IP sockets in c practical guide for programmers" y me llamo la atencion un dato,se menciona que mostrar como primer argumento de la funcion printf una cadena (buffer recibido) obtenida por medio de la comunicacion con el socket, hace el codigo vulnerable, ¿a que se debe esto, que tipo de vulnerabilidad presenta?

pdta: en el libro se recomienda para evitar la vulnerabilidad utilizar fputs en vez de printf.



sch3m4

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

4rkn63l

vaya, interesante  :silbar: hace unos dias estaba viendo un codigo de un synflood utilizando los sockets en C, ahora esto y me imagino que deben haber alguna otra cosa por ahi...cada vez me gusta mas este tema de los sockets.  ;-)

gracias por los links sch3m4.

Garfield07

Para el que no lo entienda, es que a printf se le pasa una cadena sin más:
printf ("Hola mundo!");
Pues que pasa si le pasas...
printf ("Hola mundo %d%d%d!");
Pues que leera los tres ultimos datos de la pila... es cosa de ensamblador. La cosa es que al llamar a una funcion se escriben diversos datos en la pila, y en la funcion printf recupera de la pila los datos recibidos antes de la funcion cuando sale una caracter de control... A resumir, podrias leer cualquier dato de la pila.
Pero... se podria escribir? Resulta que un caracter especial escribe el numero de bytes leidos... Asi que controlando los datos... ya se sabe.

Mas en el libro "Hacking. Técnicas fundamentales". Fantastico libro sobre C, ensamblador y hacking!


* 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