본문 바로가기
ctflearn

[ctflearn] Exclusive Santa

by skyepodium 2022. 8. 15.

1. 개요

이미지 XOR 문제

 

2. 분석

1) 파일 카빙

2개의 사진중 3.png에서 IEND 청크 뒤에 추가 데이터가 있다고 합니다.

hex 에디터로 열어봤더니 PNG 파일이 하나더 있어서 foremost로 파일카빙 했습니다.(binwalk는 잘 안되었습니다.)

foremost -t all 3.png

다음 사진을 얻었습니다.

 

2) XOR

사실 3.png의 원래 의미는 합집합에서 교집합을 제외한 XOR 입니다.

1.png와 3.png를 foremost로 분해해서 얻는 파일을 XOR 연산합니다.

 

python으로 직접 연산해도 되고요, 저는 stegsolve를 사용했습니다.

 

1.png를 먼저 열어주고

Image Combiner 누르고 뽑아낸 파일을 열어줍니다.

XOR 결과로 flag를 얻었습니다.

 

이미지 수평 뒤집기 했습니다.

 

3) python

stegsolve 사용하지 않고, pillow로 RGB 뽑아내서, 직업 XOR 연산할 수 도 있습니다.

from PIL import Image

a = Image.open("1.png")
q = a.load()
a.close()

b = Image.open("winter.png")
w = b.load()
b.close()

width, height = a.size

rgb_list = []
for y in range(height):
    for x in range(width):
        r1, g1, b1, a1 = q[x, y]
        r2, g2, b2, a2 = w[x, y]
        r, g, b = r1 ^ r2, g1 ^ g2, b1 ^ b2
        rgb_list.append((r, g, b))


result = Image.new("RGB", (width, height))
result.putdata(rgb_list)
result.save("result.png", "PNG")

'ctflearn' 카테고리의 다른 글

[ctflearn] Blank Page  (0) 2022.08.15
[ctflearn] Image Magic  (0) 2022.08.15
[ctflearn] Minions  (0) 2022.08.15
[ctflearn] Tux!  (0) 2022.08.15
[ctflearn] 07601  (0) 2022.08.15