본문 바로가기

기타/워게임

[Dreamhack] Enc-JPG

https://dreamhack.io/wargame/challenges/752

 

Enc-JPG

드림이가 JPG파일 만드는 중에 변조가 되었어요!! JPG파일이 단단히 이상하네요…?? 문제 파일이 하나 잘못생성 되었습니다. ㅠ-ㅠ 마지막 사진 플래그 글자수는 4개입니다. DH{JPG_TXT_PNG} #문제 이상

dreamhack.io

3 - Enc-JPG - forensics


문제 파일은 flag.jpg와 Enc이다.

사진 파일이 제대로 열리지 않는 것으로 보아 시그니처가 손상되었을 것 같다고 생각했다.

 

 

아니나 다를까 jpg 파일은 시그니처가 망가져있는 상태였다. 

 

여기서 Enc 파일을 열어보니 시그니처가 MZ로 실행파일임을 알 수 있었다.

.exe로 확장자를 변경하고 실행해본다.

 

실행하면 flag.jpg가 제대로 된 이미지 파일로 복구된다.

HxD로 봤을 때 flag.jpg나 함수 이름들이 보이는 걸로 봐서는 flag.jpg를 타겟으로 복구하는 프로그램인듯?

그러나 flag.jpg는 일부가 가려진 상태로 내용을 알 수 없다.

 

jpg 파일의 푸터 시그니처는 FF D9이다. 그러나 푸터 시그니처가 일치하지 않는 모습!!

중간에 PNG의 헤더 시그니처가 있는 걸로 봐서는 jpg+PNG이렇게 합쳐진 듯 싶다.

 

jpg 영역을 추출하기 위해 FF D9를 검색했더니 두 개의 결과가 나왔다.

첫 번째는 딱히 끝날 부분이 아닌데 잘못 FF D9가 생성된 것으로 보여 삭제해줬다.

 

 

첫 번째의 FF D9를 삭제해주고 저장하면 jpg 파일의 모습이 바뀐다.

DH{How

플래그의 prefix로 보인다.

 

그리고 진짜 푸터 시그니처(FF D9)와 PNG의 헤더 시그니처 사이에는 문자열이 들어가 있다.

Find the String. "_ENc_ECrypt" 

플래그의 일부라고 생각했다.

 

 

이후 PNG의 헤더 시그니처부터 파일의 끝까지 쭉 긁어서 flag.png로 저장해보았다.

파일은 정상적으로 열리나 별다른 정보는 없었다.

 

그런데 PNG 파일의 이 부분....

정석적으로 flag의 마지막 부분처럼 보이지 않나??

_yo}

 

 

그래서 의심스러운 세 가지 string을 조합해봤다.

flag : DH{How_ENc_ECrypt_yo}

 

정답... 

애초에 문제에서 JPG, TXT, PNG의 조합이라고 줘서 각각에서 의심되는 문자열을 찾을 수 있었다.

 


+) 나중에 찾아보니 PNG 파일에서 flag가 있던 4바이트 자리는 원래 IDAT의 크기를 의미하는 부분이라고 한다!!
그래서 크기라고 치기에는 너무 크다는 점을 이상 징후로 판단해 플래그로 적는 것이 정석이라고 한다.

'기타 > 워게임' 카테고리의 다른 글

[Dreamhack] video_in_video  (0) 2023.11.18
[Dreamhack] command-injection-1  (0) 2023.11.15
[Dreamhack] rev-basic 2  (89) 2023.11.14
[Dreamhack] devtools-sources  (1) 2023.11.03
[Dreamhack] Snowing!  (0) 2023.11.03