ThcCTF 2021의 Living QR Code 문제다. gif 파일이 하나 주어져 있다.
gif 파일을 열어본다면 위 사진과 같은 QR 코드가 나오는데, 문제는 gif 파일이다 보니 QR 코드 이미지가 바뀌어 가면서 보여진다. 일단 무엇을 하든 gif로 압축된 원본 사진 파일들이 필요할 것 같아서 jpg로 변환했다. (변환에 사용한 사이트다. https://ezgif.com/gif-to-apng)
위는 gif파일을 jpg로 변환한 모습이다. 확인해보니 각각 모양이 다른 QR code 이미지 41개가 존재했다. 처음에는 이 이미지들을 모두 겹쳐서 만들어진 QR code를 스캔해야지 flag를 얻을 수 있지 않을까 생각해 이미지 겹치기 관련해서 구글링을 했었다.
하지만 답은 생각보다 간단했었다. 단순히 저 QR code 이미지들을 decoding한다면 flag를 얻을 수 있는 것이었다.
https://zxing.org/w/decode.jspx
위 사이트를 이용해서 사진 하나 하나를 decoding한다면 THCon21{.....}형식으로 flag가 만들어지는 것이었다.
물론 하나하나 수작업으로 decoding을 해도 flag를 얻을 수는 있겠지만 문제의 목적은 코딩을 통해 flag를 얻는 것이도 하고, 하나하나 하기에는 너무 양이 많고 귀찮기 때문에 python으로 자동화 코드를 작성했다.
from PIL import Image
from pyzbar import pyzbar
for i in range(41): # image가 41개이므로 41번 반복
img = Image.open('./qr_images/e0306c78b1734d93e8f29b77ea4c795aV4ajtWwjV451S6d0-'+str(i)+'.jpg')
data = pyzbar.decode(img)
data = data[0].data
print(data.decode('utf-8'), end="")
# image를 열고 qrcode를 디코딩해 그 결과를 출력
print()
decoding된 값들을 연결하니 flag를 얻을 수 있었다.
'CTF' 카테고리의 다른 글
[HSCTF 8] pwn - stonks (0) | 2021.06.20 |
---|---|
[HSCTF 8] misc - seeded-randomizer (0) | 2021.06.20 |
ThcCTF 2021 - SQL for dummies (0) | 2021.06.12 |
ThcCTF 2021 - Welcome (0) | 2021.06.12 |
wtfCTF 2021 - k3Y (0) | 2021.06.05 |