Probablemente ya conozcáis las bombas zip, las bombas xml, etc., por decirlo de una manera sencilla, ficheros (relativamente) pequeños que producen una salida de enorme tamaño cuando son interpretados por el software nativo. El resultado, si se tiene mala leche, es provocar una auténtica denegación de servicio en la máquina que se ejecuta.
Hace unos meses en un foro de StackExchange lanzaron un reto para crear una de estas bombas abusando de un compilador. El ganador, el código más pequeño capaz de generar la salida mayor al compilarse.
Y bueno, un tal Digital Trauma presentó tan sólo 29 bytes de código C que al compilarse generar un ejecutable de... 17,179,875,837 bytes (16 GB)!:
Como veis, se define la función main como un array large (unsigned int con el valor 0xffffffff) y se inicializa en el primer elemento. Esto hará que GCC almacene el array entero en el ejecutable resultante. Debido a que el array es mayor de 2GBs al compilarlo tendremos que especificar el flag -mcmodel=medium. Así que si ejecutamos:
Veréis como se satura rápidamente la CPU, la memoria y el disco... :-O
Fuente: Build a Compiler Bomb
Hace unos meses en un foro de StackExchange lanzaron un reto para crear una de estas bombas abusando de un compilador. El ganador, el código más pequeño capaz de generar la salida mayor al compilarse.
Y bueno, un tal Digital Trauma presentó tan sólo 29 bytes de código C que al compilarse generar un ejecutable de... 17,179,875,837 bytes (16 GB)!:
main[-1u]={1};
Como veis, se define la función main como un array large (unsigned int con el valor 0xffffffff) y se inicializa en el primer elemento. Esto hará que GCC almacene el array entero en el ejecutable resultante. Debido a que el array es mayor de 2GBs al compilarlo tendremos que especificar el flag -mcmodel=medium. Así que si ejecutamos:
gcc -mcmodel=medium cbomb.c -o cbomb
Veréis como se satura rápidamente la CPU, la memoria y el disco... :-O
Fuente: Build a Compiler Bomb
:_) https://pbs.twimg.com/media/Cu_1gfYWYAAKyqH.jpg
ResponderEliminarbuenísimo el meme! lol!!
Eliminarme ha gustado tanto que lo he añadido al post.. muchas gracias ;)
Realmente sorprendente.
ResponderEliminarpara que sistema operativo o con que compilador realizamos este trabajo
ResponderEliminar