CTF #nullcon 2012: Programación 3
En el tercer nivel nos encontramos con un trozo de código escrito en Brainfuck, un lenguaje un tanto peculiar y que claramente hace honor a su nombre. Algún le dedicaré una entrada en el blog.
El código con en el que tenemos que lidiar es este:
>+++++++[<+++++++>-]<--- . . >+++++[<+++++>-]<++ >++++++[<++++++>-]<+ >+++++++++[<--------->-]<+++ >++++++++[<++++++++>-]<++++++ >++[<-->-]<- ++ >++++[<++++>-]<+ >++++++++[<-------->-]<-------- >+++[<--->-]<--- >+++++++++[<+++++++++>-]<--- >+++[<--->-]< >++++[<++++>-]<+ >++++[<---->-]<- >++++[<++++>-]<--- >+++++++++[<--------->-]<- >++++++++[<++++++++>-]<+++++ >++++[<++++>-]<+ >++++[<---->-]<- >++++[<++++>-]<--- >+++++++++[<--------->-]<- >+++++++++[<+++++++++>-]<++++ -- >++++[<---->-]<++ >++++++++[<-------->-]<----- >++++++++[<++++++++>-]<+++++++ -- >++++[<++++>-]<- - >+++++++++[<--------->-]<++++++ + >+++[<--->-]< >+++++++++[<+++++++++>-]<-- +++ >+++++++++[<--------->-]<- >+++++++++[<+++++++++>-]<++ --- ++ >+++[<--->-]< >++[<++>-]<+ >++[<++>-]<++ >++++[<---->-]<++ >++++++++[<-------->-]<++ + +++ >+++[<--->-]<--- >+++++++++[<+++++++++>-]<- >+++[<--->-]<-- >++++[<++++>-]<--- >+++[<--->-]< >++[<++>-]<++ >+++[<--->-]<-- >+++++++[<------->-]<----- >++++[<---->-]<++ >++++++[<++++++>-]<+++++ >+++++[<+++++>-]<++++ >++++++++[<-------->-]<------ >+++++++++[<+++++++++>-]<++++++++ >+++[<--->-]<- >++[<++>-]<++ >+++++++++[<--------->-]<---- >++++++++[<++++++++>-]<++++ >+++[<+++>-]<++ >+++++++++[<--------->-]<++ >+++++++++[<+++++++++>-]<++++++ >++++[<---->-]<-- >++++++++[<-------->-]<----- >+++++++++[<+++++++++>-]<++++++ >++++[<---->-]<++ +++ . >+++++++++[<--------->-]<+++++ >+++++++++[<+++++++++>-]<++ >++++[<---->-]<++ >+++[<+++>-]< >+++[<--->-]<- >++++++++[<-------->-]<---- >++++++++[<++++++++>-]<+++++ >++++[<++++>-]<+ >++++[<---->-]<+++ +++ >+++++++++[<--------->-]<+++++ >++++++++[<++++++++>-]<++++ >++++[<++++>-]<+++ >+++++[<----->-]<+++ >++++[<++++>-]<+ >+++[<--->-]<--- >++++[<++++>-]<--- >+++++++++[<--------->-]<-- >++++++++[<++++++++>-]<+ >++[<++>-]<+ >++++[<++++>-]<-- >++++[<---->-]<+ >++++[<++++>-]<--- >+++++++++[<--------->-]<- >+++++++++[<+++++++++>-]<++++++++ >+++[<--->-]<- >++[<++>-]<++ >++++++++[<-------->-]<------- .
Si buscas por Google hay muchos intérpretes y conversores para este lenguaje. Si ejecutamos dicho código tal y como está, esta es la salida: ..l.. Después de mirar un rato y depurar un poco el código, la solución a la que llegué fue poner un ‘.’ (punto) al final de cada línea que no tenía punto. El punto significa poner el byte actual en la salida. Así tras haber hecho eso y ejecutar de nuevo la salida que obtenemos es:
…In fact, never ever use gets() or sprintf(), period. If you do we will send evil dwarfs after you.. Que es nuestro flag.
Buscar
Entradas Recientes
- Posts
- Reemplazando la bateria del AirTag
- OpenExpo Europe décima edición, 18 de mayo: El Epicentro de la Innovación y la Transformación Digital
- Docker Init
- Kubernetes para profesionales
- Agenda: OpenExpo Europe 2022 llega el 30 de junio en formato presencial
- Libro 'Manual de la Resilencia', de Alejandro Corletti, toda una referencia para la gestión de la seguridad en nuestros sistemas
- Mujeres hackers en ElevenPaths Radio
- Creando certificados X.509 caducados
- Generador de imágenes Docker para infosec