CTFlearn에서 제공하는
Hard 난이도의 MISC 문제
MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.
반응형
문제 설명을 보면
어떤 사진이 MIXER 에 의해 뒤죽박죽이 되어서
잘 동작하지 않는다고 한다.
이 사진을 다시 복구해달라는게 문제의 요구사항이다.
문제에서 주어지는 파일은
fl4g.jpeg 파일이다.
해당 파일을 열어볼려고 하면
파일이 깨진듯 오류가 나면서 열 수가 없다.
해당 파일을 HxD로 열어보면
바로 뭔가 이상한걸 알아챌 수 있다.
JPG 파일은 무조건 시작할때
FF D8 ~ 로 시작을 한다.
이런걸 파일 시그니처 라고 하는데
문제에서 같이 주어진 위키피디아 힌트 페이지에서도 확인할 수 있다.
자세히 보면
원래는
FF D8 FF E0 00 10 4A 46 49 46 00 01 이어야 하는 부분이
E0 FF D8 FF 46 4A 10 00 01 00 46 49 라고 써있는데
4바이트씩 끊어서
역순으로 적혀있는게 보인다.
파일 전반적으로 다 똑같이 적용되어있을거라고 보고
간단한 파이썬 코드를 통해 이를 복구시켜주면 된다.
def read_jpg_file_as_hex(filename):
with open(filename, 'rb') as f:
data = f.read()
hex_data = data.hex()
return hex_data
def reverse_bytes(hex_data):
reversed_data = ""
for i in range(0, len(hex_data), 8):
bytes_str = hex_data[i:i + 8]
reversed_bytes_str = bytes_str[6:8] + bytes_str[4:6] + bytes_str[2:4] + bytes_str[0:2]
reversed_data += reversed_bytes_str + " "
return reversed_data.strip()
filename = 'fl4g.jpeg'
hex_data = read_jpg_file_as_hex(filename)
reversed_data = reverse_bytes(hex_data)
print(reversed_data)
이렇게 JPG 파일을 HEX 값 형태로 읽어들여
4바이트씩 쪼갠 뒤
다시 역으로 붙혀주면 된다.
코드를 실행시켜 주면
아까 시그니처에서 봤던것 처럼
맨 앞이
FF D8 FF E000 10 4A 4649 46 00 01 로 시작하는것을 확인할 수 있다.
해당 HEX 값을 이미지로 저장해주면
플래그를 확인할 수 있다.
반응형
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] ShahOfGimli - 포렌식 / HxD / Binwalk / AES (158) | 2023.08.26 |
---|---|
[CTFlearn] Polycrypto - 암호학 / Python (133) | 2023.08.12 |
[CTFlearn] The Adventures of Boris Ivanov Part 2 - 프로그래밍 / PIL (125) | 2023.08.05 |
[CTFlearn] Get Into Command Mission - MISC / IDA (112) | 2023.08.03 |
[CTFlearn] Old memories - 프로그래밍 / PIL (114) | 2023.08.01 |