푸는데 조금 시간이 걸렸던 포렌식 문제
별다른 설명없이 flag.png 파일 하나만 주어진다.
문제 제목이 GNP 인데 뭔가 PNG 를 거꾸로 쓴 느낌이다.
이 부분을 잘 기억해야 한다.
주어진 flag.png 파일을 열어보면 이런 그림이다.
대회 주최측 로고 같은게 그려져 있고 그 외에 특이한 점은 없다.
해당 파일을 HxD 를 이용해 열어보니
이상한 점을 바로 확인할 수 있었다.
파일의 맨 앞부분이 FF D8 FF E0 로 시작하는것을 볼 수 있는데
이건 JPG 파일의 특징이다. 이런걸 파일 시그니처 라고 한다.
그러니까 확장자는 .png 인데, 알고봤더니 JPG 파일이라는 것이다.
그럼 문제 제목에서 PNG 를 거꾸로 쓴듯한 GNP 는 무엇을 의미할까?
컨트롤 + F 키늘 룰러 검색 기능을 이용해 16진수값인 FF D9 를 검색해본다.
FF D9 는 JPG 파일의 끝을 의미한다.
FF D9가 나오면 JPG 파일은 끝나고, 그 뒤에 아무 데이터도 없어야 정상이다.
그런데 이 파일을 보면 FF D9 뒤에
h4c{This_is_not_a_flag} 라는 가짜 플래그가 나오고, 뒤에 계속해서 데이터가 있는것을 볼 수 있다.
여기서 주목할 것은 `B®DNEI 라는 문자열인데,
이걸 거꾸로 쓴 IEND®B` 는 PNG 파일의 끝을 의미한다.
이렇게 IEND 라는 문자열이 보이면 PNG 파일은 끝인 것이다.
위에서 발견한 사실이랑 문제 제목을 통해 유추해보면
JPG 파일 뒤에 PNG 파일이 거꾸로 쓰여서 들어가 있다는 것을 알 수 있다.
이건 간단하게 복원할 수 있다.
CyberChef(https://gchq.github.io/CyberChef) 에 가서
flag.png 파일에서 png 데이터에 해당하는 부분의 Hex 값을 넣은 뒤
Byte 단위로 Reverse 해주면 된다.
오른쪽에 저장 버튼을 누르면 복원이 파일로 저장할 수 있다.
저장하면 이런 파일이 나오는데
아까 봤던 flag.png 랑 크게 다를게 없어보인다.
Stegsolve 라는 도구를 이용해 해당 파일을 분석해보았다.
(http://www.caesum.com/handbook/Stegsolve.jar)
위 경로에서 Stegsolve.jar 파일을 다운로드 받을 수 있다.
Stegsolve를 실행시켜서 Open으로 이미지를 불러오면 된다.
아래쪽에 있는 <, > 버튼을 누르면
이미지의 alpha, blue, green, red, xor 등등 다양한 값을 조정한 형태를 보여주게 된다.
몇번 넘기다 보니 Red plane 0 에서 아래쪽에 안보이던 문자열이 보였다.
z4q{Z3bbw_43pygq} 라고 적혀있는데
뭔가 플래그 포맷이지만 플래그가 아닌것 처럼 생겼다.
여기서 살짝 Guessing 을 이용해서 풀었는데
아까 봤던 가짜 플래그를 보면
h4c{This_is_not_a_flag} 이렇게 h4c 로 시작하는걸 볼 수 있다.
그걸 토대로 Stegsolve 로 찾은 플래그에서 z -> h / q -> c 로 바꿔보았다.
그럼 h4c{H3bbw_43pygc} 이렇게 되는데
앞쪽 단어부터 보면 3 은 보통 e 로 치환해서 많이 쓰니 앞의 단어는 He??? 일거라고 생각했고
He로 시작하면서, 세번째/네번째 글자가 같은 5글자 영단어는 Hello 일거라고 판단했다.
뒤쪽 단어는 4가 보통 for 라고도 쓰이니 43pygc를 fore???c 라고도 쓸 수 있는데,
마침 이 문제가 포렌식 문제이니 forensic 일거라고 생각했다.
결론적으로 추측한 내용이 맞았고, h4c{H3llo_43nsic} 이 이번 문제의 플래그였다.
'CTF > 포렌식' 카테고리의 다른 글
[TeamH4C CTF] simple_forensic - 포렌식 / John the Ripper / Unicode / HxD (63) | 2022.12.15 |
---|---|
[TeamH4C CTF] message from space - 포렌식 / SSTV / Steghide (55) | 2022.12.11 |
[TeamH4C CTF] Find the flag - 포렌식 / HxD / Binwalk (67) | 2022.12.07 |
[b0lers CTF] Matryoshka(2/2) - 포렌식 / PIL / HxD (50) | 2022.12.03 |
[b0lers CTF] Matryoshka(1/2) - 포렌식 / PIL / HxD (50) | 2022.12.02 |