$ cat writeup.md…
$ cat writeup.md…
metactf
Task: a PNG image containing moon-phase style symbols with no hidden metadata or embedded payloads. Solution: treat it as a visual symbol cipher, identify Leandro Katz's Lunar Alphabet, and decode the repeated glyph pattern as MOONMAN.
Original organizer description was not preserved locally; only the challenge image
moonieface.pngwas available in the task directory.
The task provides a PNG image containing seven moon-phase style glyphs. The goal is to determine what alphabet those symbols belong to and decode the hidden word used inside the flag.
The first step was standard file-level recon:
file moonieface.png strings moonieface.png exiftool moonieface.png pngcheck moonieface.png
This established that the file was an ordinary PNG. Metadata was not useful beyond a gnome-screenshot style tag, and pngcheck did not show suspicious chunk anomalies or embedded files. That ruled out the usual metadata / appended-data stego path.
At that point the image had to be solved visually. The important observation was that it contained seven distinct moon-phase style glyphs.
Because the symbols looked like stylized lunar phases, the next step was to search for moon-based alphabets rather than generic astronomical symbols. That led to Leandro Katz's Lunar Alphabet, whose glyph shapes matched the symbols in the image.
The seven glyphs were not all unique. Their repetition pattern was:
So the plaintext had the structure:
M O O N M A N
Once the symbols were matched against the Lunar Alphabet chart, the word decoded cleanly as:
MOONMAN
file, strings, exiftool, and pngcheck.MOONMAN.#!/usr/bin/env python3 # Manual decode after identifying Leandro Katz's Lunar Alphabet. # The glyphs in the challenge image correspond to the letters below. decoded = ["M", "O", "O", "N", "M", "A", "N"] word = "".join(decoded) flag = f"DawgCTF{{{word}}}" print(word) print(flag)
$ cat /etc/motd
Liked this one?
Pro unlocks every writeup, every flag, and API access. $9/mo.
$ cat pricing.md$ grep --similar