https://hackingstudypad.tistory.com/341
지난 포스팅에 이어서 계속 쓰는 Matryoshka 문제
지난번 마지막으로 생성했던 qr.gz 파일 내에서
압축되어 있는 qr 이라는 이름의 파일을 발견했었다.
열어보니 숫자 1과 알파벳 엘(l) 로 이루어진 85x85 크기의 텍스트 파일인데
두 문자가 마구 섞여서 뭔지 알아보기가 힘들다.
하지만 파일의 이름이 qr 이니
이전 png 파일처럼 하나는 흰색, 하나는 검은색을 의미하는 것일거라고 생각했다.
Sublime에서 l 을 □ 로, 1을 ■ 로 한번 바꿔봤더니
뭔가 QR코드 같이 생긴 그림이 보였다.
다음으로 이걸 진짜 그림으로 바꿔주는 작업을 했다.
from PIL import Image
qr = open('qr', 'r')
new = Image.new('RGB', (340,340), (0,0,0))
for i in range(85):
data = qr.readline()
for j in range(len(data)):
if data[j] == 'l':
for l in range((i*4),(i*4)+4):
for k in range((j*4),(j*4)+4):
new.putpixel((k,l),(255,255,255))
new.save('output2.png')
이렇게 코드를 작성했다.
qr 파일을 각 줄별로 읽어들이고, 각 줄에서 맨 앞에 문자열부터 차례대로 읽는다.
만약 읽은 문자가 l 이면, 그 위치의 4x4 영역을 흰색으로 칠했다.
왜 하필 4x4 로 했냐면,
qr 파일이 85x85 인데 이게 이미지로 만들면 너무 작을것 같아서 4배 큰 사이즈인 340x340으로
결과 파일을 만들려고 했기 때문이다.
코드를 실행시키면 예상했던 것처럼 QR코드가 하나 생성된다.
다시한번 온라인 바코드 리더를 이용해 QR코드를 읽어봤다.
(https://online-barcode-reader.inliteresearch.com/)
이번에는 PNG 파일이 결과로 나오는것을 볼 수 있다.
이번에도 hex 값을 복사해서 HxD에 붙혀넣은 뒤 .png 파일을 하나 생성한다.
생성된 png 파일을 보면 이렇게 생겼다.
QR코드처럼 보이긴 한데.. 뭔가 어색하다.
이건 흰색/검은색이 반전되어 있어서 그렇다.
from PIL import Image
img1 = Image.open('qr.png').convert('RGB')
xlen = 57
ylen = 57
new = Image.new('RGB', (xlen,ylen), (0,0,0))
for y in range(ylen):
for x in range(xlen):
r,g,b = img1.getpixel((x,y))
if r == 0:
new.putpixel((x,y),(255,255,255))
new.save('output3.png')
색상반전은 위 코드로 시켜줄 수 있다.
파일을 한 픽셀씩 읽어들이고,
온통 검은색인 이미지를 하나 생성한 뒤,
읽은 픽셀이 검은색이면 해당 위치를 하얀색으로 표시해주는 것이다.
코드를 실행시키면 이렇게 반전된 QR코드가 나오게 된다.
다시한번 온라인 리더에 넣어 읽어주면..
이번엔 7z 로 시작하는걸 보니 .7z 파일인것 같다.
아까 햇던것과 같이 HxD에 hex값을 복붙해서 flag.7z 파일을 생성하고
압축해제 프로그램으로 열어보면 안에 flag 라는 이름의 파일이 있는것을 확인할 수 있다.
그런데 암호가 걸려있어서 바로 풀지 못한다...하
짜증나서 그냥 1234 쳤는데 압축이 풀려버렸다;;
압축 풀린 flag 파일 안에 플래그가 적혀있었다.
정말.. 마트료시카처럼 끝도없는 문제였다.
'CTF > 포렌식' 카테고리의 다른 글
[TeamH4C CTF] GNP - 포렌식 / HxD / Stegsolve (62) | 2022.12.09 |
---|---|
[TeamH4C CTF] Find the flag - 포렌식 / HxD / Binwalk (67) | 2022.12.07 |
[b0lers CTF] Matryoshka(1/2) - 포렌식 / PIL / HxD (50) | 2022.12.02 |
[b01lers CTF] Echoes of Reality / Zima Blue - 포렌식 / Stegsolve / Audacity (65) | 2022.11.30 |
[TastelessCTF] 7/11 - 포렌식 / Binwalk / dd (58) | 2022.11.22 |