I made a chat service where you can have CTF related conversations using ctftime MCP!

Oh but it's still in beta so I haven't actually applied MCP to the service yet and am just testing.. there shouldn't be any problems right?

Challenge Writer Message…

First, I would like to express my sincere gratitude to all players who attempted the CTFinder challenge! Actually, after creating this challenge, I expected it would be quite difficult.

However, more teams solved it than I anticipated, and after checking most solvers, I realized that the intended solution I had in mind didn't come out. (When I last checked, there were no teams that solved it with the intended solution. But if there are teams who solved it with the intended approach after I checked, I would like to express my great gratitude to those teams!)

I had a lot of concerns during the process of creating the challenge. There were parts where I suspected unintended solutions might exist, but I thought the challenge would become very messy if I patched all those parts. And I thought that even if unintended solutions occurred in the challenge, the unintended solutions themselves wouldn't be simple.

Eventually, unintended solutions actually occurred in the vectors I suspected, and I think many teams approached the challenge in the unintended direction because of this.

Therefore, I originally considered quickly releasing a revenge challenge with unintended solutions patched when only 2-3 teams had solved the challenge. However, after much consideration, I ultimately decided not to release a revenge challenge.

Even after checking the code with unintended solutions patched, I could still see parts that could potentially be bypassed, and there was insufficient testing time to definitively patch the unintended solutions.

image.png

Yes, so in the end, I died.

I thought that if I didn't block all potential unintended vectors, it would ultimately be like giving double points to teams that had already solved the challenge. Additionally, I actually had to be away for about 20 hours during the CTF period. (I had to take a flight from Korea to LA.)

So ultimately, I judged that there was insufficient time to adequately test and deploy/review a revenge challenge, and decided not to release a revenge challenge..

Therefore, I wrote this writeup in detail to explain the original intended solution of the challenge to as many people as possible. (There were some people saying this challenge was guessing, but I guarantee that I didn't put even a single guessing element in this challenge.)

Challenge Concept TL;DR

This challenge was created with the concept of a chat-based web service where users can directly communicate with LLM in streaming format using Claude API.

The challenge has a custom-implemented MCP server, and the main function of this server is to perform the role of helping conduct all CTF-related searches (team search, upcoming CTFs, rating-based CTF comparison, CTF event detailed descriptions, etc.) using the ctftime API.

The challenge consists of a total of 4 containers with a web server (web), administrator bot server (bot), and MCP server (mcp-server). Additionally, a redis server (redis) for caching work is connected to the service.

Challenge Goal