Función strncpy en C

La función strncpy en el lenguaje C es una mejora (o alternativa) de la función strcpy que quiere decir string copy. La n indica el conteo que se copia, que en términos simples podrían ser caracteres.

Entonces la diferencia es que strncpy copia solo determinada cantidad de caracteres, contraria a strcpy que copia todo; con el riesgo de que ocurra un desbordamiento de búfer.

En este post te mostraré la sintaxis de strncpy y su modo de uso con ejemplos.

(más…)

C: insertar cadena en otra cadena

Hoy veremos un ejercicio de trabajo con cadenas o strings en C. Se trata de ver una función para insertar una cadena dentro de otra cadena, en cualquier posición.

Es decir, colocar una substring en una string de C. Como sabemos, las cadenas en C son un dolor de cabeza.

Durante la madrugada estuve trabajando en una función que hace exactamente eso y la vengo a compartir.

(más…)

Desbordamiento de búfer en C

Hoy veremos lo que es un desbordamiento de búfer en C y cómo puede (en su forma más simple) hacer que un usuario aproveche esa vulnerabilidad para explotar nuestro programa.

Nota: esto es diferente a cuando se desborda una variable.

Lo que es un desbordamiento de búfer

Según la Wikipedia:

En seguridad informática y programación, un desbordamiento de búfer (del inglés buffer overflow o buffer overrun) es un error de software que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria reservada a tal efecto (buffer): Si dicha cantidad es superior a la capacidad preasignada, los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente pertenecían a datos o código almacenados en memoria. Esto constituye un fallo de programación.

En otras palabras le da al usuario de nuestro programa la forma de sobrescribir una variable a su antojo; bueno, no siempre y no tan fácil, pero alguien con tiempo puede encontrarlas y explotarlas.

Esto es peligroso en programas que se van para producción, por ejemplo un sistema de la apertura de una puerta o cosas de esas que tienen que ver con la seguridad.

(más…)