CanYouSee

Published: April 3, 2024

Description

How about some hide and seek?

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.zip

Solution

  1. Step 1Inspect EXIF metadata
    Use 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.jpg
    Learn 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), and Autopsy are essential for metadata-aware forensics.

  2. Step 2Extract just the encoded value
    A 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 -d
    Learn more

    This command demonstrates the Unix philosophy of chaining small tools with pipes (|) to accomplish complex text processing. Each stage has a single responsibility: grep finds the line, cut extracts the value after the colon, tr -d " " removes whitespace, and base64 -d decodes 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":" -f2 command 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.

Want more picoCTF 2024 writeups?

Useful tools for Forensics

Related reading

What to try next