ASIS CTF Quals 2014 | Stego 100: Blocks [Write-Up]

This was a very easy stegano challenge, but weirdly, it was only solved by 6 teams including us. We were given a simple PNG image:

Image

A bit of steganalysis showed us some LSB in the alpha channel:

Image

Our first thought was: let’s XOR the two images! Then, we simply had to decode the resulting 8-bit binary string to get 100 points.

import Image
img = Image.open('steg100.png')

strbit1 = ''
for y in range(0, img.size[1], 19):
	for x in range(0, img.size[0], 19):
		r, g, b, a = img.getpixel((x, y))
		strbit1 += str(r & 1)

strbit2 = ''
for y in range(171, 171 + 19):
	for x in range(171, 171 + 19):
		r, g, b, a = img.getpixel((x, y))
		strbit2 += str(a & 1)

xored = ''.join(str(int(A) ^ int(B)) for A, B in zip(strbit1, strbit2))
print ''.join(chr(int(xored[i:i + 8], 2)) for i in range(0, len(xored), 8))

Output: flag = ASIS_08213db585ffe1c93c8f04622c319594.
Enjoy.

Publicités

4 réflexions au sujet de « ASIS CTF Quals 2014 | Stego 100: Blocks [Write-Up] »

  1. D’accord, merci. J’ai une autre question car je suis totalement débutant dans ce domaine : « Our first thought was: let’s XOR the two images! » Pourquoi ?

    1. Parce que les 2 images obtenues ne donnent rien de spécial, et que le XOR est très souvent utilisé dans les challenges. C’est un coup de chance disons, ça aurait ne pas être ça du tout 😉

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s