Hiding in Plain Sight
Challenge
Content preserved from the original writeup source. Minimal normalization was applied to fit platform format.
Solution
Original Writeup Content (Preserved)
Hiding in Plain Sight - Write-Up
Challenge
A single image file was provided: hello.webp.
Prompt hint:
- "There's something strange about this image..."
- Flag format:
DawgCTF{Person_Or_Object}
Initial Checks
I started with basic file and metadata inspection:
- Confirmed
hello.webpis a normal VP8 WebP image (1024x1024). - Checked EXIF/metadata with
exiftool; no useful hidden text. - Checked for appended payloads with
binwalk; no embedded secondary files detected.
At this point, the clue likely involved visual steganography rather than metadata/file concatenation.
Visual Stego Approach
To reveal hidden content, I generated multiple image transforms:
- high contrast
- edge detection
- channel splits (R/G/B)
- bit-plane extraction for each RGB channel (bits 0 through 7)
The key step was bit-plane analysis. In the higher bit planes (especially around bit 7), a hidden face becomes clearly visible.
Identification
The hidden face is Barack Obama.
Final Flag
DawgCTF{Barack_Obama}
Repro Notes (commands used)
file hello.webp
exiftool -a -u -g1 hello.webp
binwalk hello.webp
from PIL import Image
import numpy as np
img = np.array(Image.open('hello.webp').convert('RGB'))
for c, name in enumerate(['r', 'g', 'b']):
ch = img[:, :, c]
for bit in range(8):
plane = ((ch >> bit) & 1) * 255
Image.fromarray(plane.astype('uint8')).save(f'hello_{name}_bit{bit}.png')
Takeaway
If a challenge says "in plain sight" and metadata looks clean, bit-plane or channel-based visual steganography is often the intended solve path.