Hacker101 CTF Architecture
The Hacker101 CTF has been up for about two and a half months now, with thousands of users finding tens of thousands of flags. It has been working beautifully – after a few rough days at the beginning – with hundreds of simultaneous instances running in parallel. Getting there, though, was an adventure.
The CTF is built on with five notable pieces:
- Messaging protocol
- Web frontend
- Database – This is just Postgres
- Levels – These are individual Docker images, completely self-contained and having their own web server
One overall note: every part of this system is built in Python, with the exception of some levels. Much <3 for Python.
I built a custom messaging protocol for this, as I had really specific goals in mind for it. In all likelihood, there is something off-the-shelf that would do what I wanted, but this was...
Continue reading →