While this is technically a CTF writeup, like I frequently do, this one is going to be a bit backwards: this is for a CTF I ran , instead of one I played! I've gotta say, it's been a little while since I played in a CTF, but I had a really good time running the BSidesSF CTF! I just wanted to thank the other organizers - in alphabetical order - @bmenrigh , @cornflakesavage , @itsc0rg1 , and @matir . I couldn't have done it without you folks!
BSidesSF CTF was a capture-the-flag challenge that ran in parallel with BSides San Francisco . It was designed to be easy/intermediate level, but we definitely had a few hair-pulling challenges.
The goal of this post is to explain a little bit of the motivation behind the challenges I wrote, and to give basic solutions. It's not going to have a step-by-step walkthrough of each challenge - though you might find that in the writeups list - but, rather, I'll cover what I intended to teach, and some interesting (to me :) ) trivia.
If you want to see the source of the challenges, our notes, and mostly everything else we generated as part of creating this CTF, you can find them here:Original sourcecode on github Google Drive notes (note that that's not the complete set of notes - some stuff (like comments from our meetings, brainstorming docs, etc) are a little too private, and contain ideas for future challenges :) )
Part of my goal for releasing all of our source + planning documents + deployment files is to a) show others how a CTF can be run, and b) encourage other CTF developers to follow suit and release their stuff!
As of the writing, the scoreboard and challenges are still online. We plan to keep them around for a couple more days before finally shutting them down.Infrastructure
The rest of my team can most definitely confirm this: I'm not an infrastructure kinda guy. I was happy to write challenges, and relied on others for infrastructure bits. The only thing I did was write a Dockerfile for each of my challenges.
As such, I'll defer to my team on this part. I'm hoping that others on my team will post more details about the configurations, which I'll share on my Twitter feed . You can also find all the Dockerfiles and deployment scripts on our Github repository .
What I do know is, we used:Googles CTF Scoreboard running on AppEngine for our scoreboard Dockerfiles for each challenge that had an online component, and Docker for testing docker-compose for testing Kubernetes for deployment Google Container Engine for running all of that in The Cloud
As I said, all the configurations are on Github. The infrastructure worked great , though, we had absolutely no traffic or load problems, and only very minor other problems.
I'm also super excited that Google graciously sponsored all of our Google Cloud expenses! The CTF weekend cost us roughly $500 - $600, and as of now we've spent a little over $800.Players
Just a few numbers:We had 728 teams register We had 531 teams score at least one point We had 354 teams score at least 100 points We had 23 teams submit at least one on-site flag (presumably, that many teams played on-site)
Also, the top-10 teams were:dcua :: 6773 OpenToAll :: 5178 scryptos :: 5093 Dragon Sector :: 4877 Antichat :: 4877 p4 :: 4777 khack40 :: 4677 squareroots :: 4643 ASIS :: 4427 Ox002147 :: 4397
The top-10 teams on-site were:OpenToAll :: 5178 :: 3548 hash_slinging_hackers :: 3278 NeverTry :: 2912 0x41434142 :: 2668 DevOps Solution :: 1823 Shadow Cats :: 1532 HOW BOU DAH :: 1448 Newbie :: 762 CTYS :: 694
The full list can be found on our CTFTime.org page .On-site challenges
We had three on-site challenges (none of them created by me):on-sight 
This was a one-point challenge designed simply to determine who's eligible for on-site prizes. We had to flag taped to the wall. Not super interesting. :)
(Speaking of prizes, I want to give a shout out to Synack for providing some prizes, and in particular to working with us on a fairly complex set-up for dealing with said prizes. :)Shared Secrets 
The Shared Secrets challenge was a last-minute idea. We wanted more on-site challenges, and others on the CTF organizers team came up with Shamir Shared Secret Scheme. We posted QR Codes containing pieces of a secret around the venue.
It was a "3 of 6" scheme, so only three were actually needed to get the secret.
The quotes on top of each image try to push people towards either "Shamir" or "ACM 22(11)". My favourite was, "Hi, hi, howdy, howdy, hi, hi! While everyone is minus, you could call me multiply", which is a line from a Shamir (the rapper) song. I did not determine if Shamir the rapper and Shamir the cryptographer were the same person. :)Locker 
Locker is really cool! We basically set up a padlock with an Arduino and a receipt printer. After successfully picking the lock, you'd get a one-time-use flag printed out by the printer.
(We had some problems with submitting the flag early-on, because we forgot to build the database for the one-time-use flags, but got that resolved quickly!)
@bmenrigh developed the lock post, which detected the lock opening, and @matir developed the software for the receipt printer.My challenges I'm not going to go o