Announcing The Matasano/Square CTF

We've teamed up with Square to run a joint Capture The Flag contest.

What is it?

Your target is a small embedded device; a microcontroller running compiled C code.

You get access to the device, disassembly of its code, and a low-level debugger and assembler. We "run" the devices, you interact with them via a vanilla web interface.

At each level, you'll get a simple input that, owing to some C software bug, can be used to own the target. You'll use the debugger to reverse the target, find the input, and then deliver it to a "production" instance to beat the level.

You'll face a series of revisions of the target, starting from "comically broken" and proceeding vendor-fix by vendor-fix through basic memory corruption, stack overflows, randomization, memory protection schemes, allocator vulnerabilities, and DRM-style software protection.

All this happens on an architecture you've probably used, but likely never have written any code for. Have you ever reverse-engineered a program from its assembly code to understand what it's doing? That'll happen too.

We're keeping a leaderboard, by completion time, CPU cycles, and input size. Part of the fun of a challenge like this is to see how others are doing in real-time.

If you've done a lot of exploit development, you won't have much trouble. But we hope the real fun is reserved for the people who haven't: you'll get to play with concepts that, in the real world, involve tedious toolchain installs and comprehensive knowledge of the memory layouts of gigantic browser library codebases. You won't need any of that here: we're looking forward to seeing people who have never written a line of assembly beating people who've been doing this for years.

How do I start?