Description
How about some hide and seek?
Setup
Download the file and unzip it to expose ukn_reality.jpg.
All work happens locally with command-line tools.
wget https://artifacts.picoctf.net/c_titan/6/unknown.zip && \
unzip unknown.zipSolution
- Step 1Inspect EXIF metadataUse exiftool to dump every field. The Attribution URL entry stands out because it holds a Base64-looking string rather than a normal link.
exiftool ukn_reality.jpgLearn more
exiftool is a powerful open-source tool for reading, writing, and editing metadata in a wide variety of file formats. Running it without arguments dumps every metadata field it can find - EXIF, IPTC, XMP, ICC Profile, JFIF, and more. For forensic investigation, this broad dump is always the right first step.
The Attribution URL field is an XMP (Extensible Metadata Platform) field typically used to credit the original source of an image. Legitimate values look like
https://example.com/photo. When you see a long alphanumeric string without slashes or dots in this field, it's a strong indicator that data has been encoded or hidden there.Base64 encoding uses only the characters A-Z, a-z, 0-9, +, /, and = (for padding). If a metadata field contains only these characters and its length is a multiple of 4, it's almost certainly Base64. This visual pattern recognition is a key forensics skill - unusual field content in otherwise structured metadata deserves immediate attention.
Metadata channels are commonly abused in malware, steganography, and data exfiltration. Attackers embed payloads, credentials, or C2 server addresses in EXIF fields, knowing that many security tools focus on file content rather than metadata. Tools like
exiftool,mat2(metadata anonymizer), andAutopsyare essential for metadata-aware forensics. - Step 2Extract just the encoded valueA quick pipeline can isolate the Attribution URL value, strip whitespace, and hand the text to base64 -d. The decoded output is the entire flag.
exiftool ukn_reality.jpg | grep "Attribution URL" | cut -d":" -f2 | tr -d " " | base64 -dLearn more
This command demonstrates the Unix philosophy of chaining small tools with pipes (
|) to accomplish complex text processing. Each stage has a single responsibility:grepfinds the line,cutextracts the value after the colon,tr -d " "removes whitespace, andbase64 -ddecodes the result.Base64 decoding reverses a lossless encoding scheme that represents arbitrary binary data using only printable ASCII characters. The scheme was designed for encoding binary data (like images or executables) in text-only protocols like email (MIME). Every 3 bytes of input produce 4 Base64 characters, making the output about 33% larger than the input.
The
cut -d":" -f2command splits on colons and takes the second field. However, if the value itself contains colons (like a URL does), you might want-f2-to get everything from the second field onward. This is an important edge case to watch for in real-world pipelines.In CTF competitions and real forensics, this "grep → extract → decode" pattern appears constantly. Automating it with shell one-liners is faster than using GUI tools, and the patterns learned here transfer directly to log analysis, malware triage, and incident response tasks where speed matters.
Flag
picoCTF{ME74D47A_HIDD3N_a6d...}
Decoding the Attribution URL entry reveals the complete flag shown above.