Trivial por red con Docker y Python

Durante MundoHackerDay una de las pruebas de miscelaneos que presentamos fue un pequeño trivial en el cual los participantes debían obtener una cantidad determinada de respuestas correctas para obtener la flag.

Esta idea surgió a raíz del trivial realizado en el CTF de Pragyan donde tenías que contestar 50 preguntas aleatorias sobre la india. En ese caso a los jugadores se les asignaban 50 preguntas concretas con lo cual podías ir haciendo prueba y error, yo decidí ser un poco malo y el set de preguntas se realiza de forma aleatoria.

Antes de que nadie se piense que fui un ogro decir que fuimos un poco “vagos” ya que solo redactamos 15 preguntas y había que contestar bien 10; así que tan malo no fui jeje

Podéis obtener la imagen directamente de https://hub.docker.com/r/kalrong/trivial/ haciendo simplemente:

docker pull kalrong/trivial

En el caso de que prefirais probarlo en local o ver los sources podéis dirigiros al repositorio de github donde lo tengo alojado y sobre el que se ejecuta el build automáticamente en hub.docker: https://github.com/KALRONG/trivial

En el caso de docker debéis recordar mapear el puerto del container en caso de que queráis dar acceso a otros.

Esta es la ayuda del trivial:

usage: trivial.py [-h] [-p PORT] [-q QUESTIONS] [-l LOG] [-f FLAG]
                  [-a ANSWERS]

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  Specify which port to be used. Default: 8100
  -q QUESTIONS, --questions QUESTIONS
                        File containing the questions for the trivial.
                        Default: /root/questions
  -l LOG, --log LOG     Folder where the logs will be saved. Defauld: ./log/
  -f FLAG, --flag FLAG  Flag given at the end of the game to the winners.
                        Default: flag{Tr1v14L-RuL3z}
  -a ANSWERS, --answers ANSWERS
                        Number of correct answers before the flag is given.
                        Default: 1

Tanto la imagen de docker como el repositorio contienen un archivo con una pregunta de ejemplo para que podáis probarlo. En el caso de que lo corráis directamente en vuestra máquina notar que por defecto la ruta al archivo de preguntas está en /root , esto lo puse así para no complicarme mucho en docker.

Como podéis ver en la ayuda el trivial es bastante configurable, podéis cambiar el puerto, el path de los logs, del archivo de preguntas, las flag, etc

Por el momento no he tenido tiempo de añadir una opción para modificar cuan verbose es el server ya que actualmente os dará información en tiempo real por la shell así como creara un archivo de log por cada ip. La idea es poder controlar que está haciendo la gente y ver si hay problemas al contestar ciertas preguntas o, en el peor de los casos, bloquear a alguien.

Espero os guste esta pequeña tool y no olvidéis dejarme vuestras sugerencias, preguntas y problemas que encontréis, serán bienvenidas.

Nos vemos!

Esta entrada fue publicada en docker, python, tools. Guarda el enlace permanente.

Deja un comentario