본문 바로가기
CTF

[TFC CTF 2022] cat

by skyepodium 2022. 8. 15.

1. 개요

이미지 연산 문제

대회때는 못풀었고 제목도 기억 안납니다., 고양이 사진 가지고 있어서 cat이라고 부르겠습니다.

 

2. 분석

1) 이미지 검색

408*612 크기의 png 사진을 주는데 아무것도 없습니다.

 

discord에서 누가 힌트줘서 알게되었는데 구글 이미지서치로 저것과 비율이 같은 사진을 찾습니다.

 

이곳의 사진과 딱 비율이 맞습니다.

https://www.eastsacvet.com/blog/how-to-take-heckin-good-care-of-your-catto-aka-cat-wellness-care-for-pet-lovers/

 

How to Take Heckin Good Care of Your Catto (aka Cat Wellness Care for Pet Lovers) | East Sacramento Veterinary Center

Our veterinary blog covers a broad range of topics pertaining to current and prospective pet owners.

www.eastsacvet.com

사진을 다운받고 맥북의 미리보기 앱으로 가로를 408로 변경하면, 세로가 612로 딱 맞습니다.

 

2) XOR

stegsolve로 문제에서 주어진 파일을 엽니다.

그다음 Image Combiner를 누르고, 구글 이미지 검색으로 다운받은 사진을 넣어줍니다.

subtract 연산을 했을때 고양이 왼쪽에 세로로 flag같은것이 보입니다.

 

여기서 한번더 검사하면 flag가 보입니다.

https://stegonline.georgeom.net/image

 

3) python

stegsolve 사용하지 않고 pillow로 RGB값 가져와서 subtraction 연산 수행했습니다.

from PIL import Image

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

b = Image.open("cat3.jpeg")
w = b.load()
b.close()

width, height = a.size


def off_set(val):
    return val if val > 0 else 255 + val

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


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

'CTF' 카테고리의 다른 글

[shell ctf 2022] World's Greatest Detective  (0) 2022.08.15
[shell ctf 2022] Extractor  (0) 2022.08.15
[nullcon Goa HackIM CTF 2022] - i love browsers  (0) 2022.08.15
[shell ctf 2022] MALBORNE  (0) 2022.08.14
[shell ctf 2022] Tring Tring....  (0) 2022.08.14