Document Retrieval
Ask Otto for a delivery receipt by name and he'll fetch it from the archive without a second thought. He's fast, he's reliable, and he has never once questioned whether a filename is trying to sneak somewhere it shouldn't.
Otto's archive holds delivery receipts only — or so he says. Why would he double-check? Everyone who asks is clearly just looking for their receipt.
Find the flag, in the format SPAM{this_is_an_example}. This container resets every 24 hours.
../ walk back up the directory tree to files the app never intended to expose.path.join() is often assumed to sanitize paths — it doesn't. It just joins segments, and ../ still does its job.Any file the running process can read becomes fair game: configuration files, credentials, source code, or anything else sitting outside the "safe" folder.
Resolve the final path and verify it still starts with the intended base directory
before reading anything. Reject names containing .. or path separators,
and prefer an allow-list of known document IDs over caller-supplied filenames.