ssoL2 TISTORY

[N0Named] [A] 입사 테스트[2] 풀이 본문

challenge/forensic

[N0Named] [A] 입사 테스트[2] 풀이

ssoL2 2021. 1. 12. 23:12

아 ㅋㅋ

입사 테스트[1]로 착각하고 헤맸네 ㅇ.ㅇ;;;;;;;;;;;;;;

 

문제 ㅎㅇ영

설명대로 이미지 파일을 복구 하면 되겠구만 ^^!

 

task.jpg 다운로드~~~

 

 

역시 지원이 안되는구만 ^^
일단 HxD로 살펴보자구~!

 

 

일단 보니까 헤더 시그니처가 JPG도 아님 근데 자세히 보니 PNG랑 더 가까움

JPG : FF D8 FF E0 xx xx 4A 46

헤더 : 89 4A 50 47 0D 0A 1A 0A

PNG : 89 50 4E 47 0D 0A 1A 0A

=> 헤더를 JPG 말고 PNG로 바꾸자

 

 

PNG 헤더 시그니처로 바꿈 ㅇㅇ

 

 

 

오 지원하지 않던 형식이 검은 바탕이 나타남 올ㅋ

 

 

그래도 이번엔 크기 형식도 작고 괜춘한디,,,,,,,,,,,,,,,,그럼 TrewkPNG로 살펴보자

TrewkPNG : PNG 파일의 청크를 확인 및 편집 가능

 

 

갑자기 Garbage found at end of file 나타남

뭔 쓰레기 일까..

(뒤에 설명 있음 !)

 

 

흠..일단 잘 열림

보니까 이 파일은 PNG가 아니라 APNG인 듯 (Contents 보면 알 수 있음)

근데 지금 이 Chunk들 패킷 순서가 틀림

 

 

acTL : PNG 명세에 정의된 부수적인 청크로, 첫번째 IDAT 청크 앞에 와야함

fcTL : PNG 명세에 정의된 부수적인 청크로, IDAT 청크 앞에 나오거나 적용되는 프레임의 fdAT 청크 앞에 와야함

fdAT : IDAT 청크와 같은 목적으로 순서 번호가 앞에 나오는 것을 제외하면 IDAT과 같은 구조

tRNS : 보조 Chunk로, Transparency 정보를 지님

 

밑에는 PNG 파일에서 PTLE Chunk의 유무에 따라서 놓여지는 패킷들의 순서를 보여줌

 

이 파일은 PLTE 청크 없으니까 순서 맞게 조립 ㄱㄱ

 

일단 IHDR 다음에 tRNS 가 와야함 ㅇㅇ 옮기자

 

다음은 IDAT 가 와야하므로 그 전에 acTL을 옮겨보장 ^^

 

다음 첫번째로 fcTL과 IDAT를 정해주면 됨

fcTL은 Contents 보면 seq#=0과 seq#=1로 순서가 정해져 있음 ㅇㅇ 

근데 IDAT는 2개가 있는데 뭘로 정하지 ?

Length 7316 짜리와 Length 32768 짜리가 있는데 당연히 큰거 먼저 오겠쥬 ?!

 

그 다음은 두번째로 올 fcTL과 IDAT 세팅 ㄱㄱ

(일단 무시하고 넘어가자..뒤에서 고친당 ㅠ.ㅠ)

 

마지막으로 fdAT 세팅해주고 IEND로 마지막 장식하면 끝!!

저장 ㄷㄱㄷㄱ 

 

 

 

오 사진열어보니까 바뀜 ㅇㅇ

 

 

 

 

근데

저기

flag는 어디갔죠?

 

 

알고보니

PNG헤더 시그니처 뿐만 아니라 푸터도 존재한데 ㅇㅇ

File Type Header Signature(Hex) Footer Signature(Hex)
JPEG FF D8 FF E0
FF D8 FF E8
FF D9
GIF 47 49 46 38 37 61 00 3B
PNG 89 50 4E 47 0D 0A 1A 0A 49 45 4E 44 AE 42 60 82
PDF  25 50 44 46 2D 31 2E 25 25 45 4F 46
ZIP 50 4B 03 04 50 4B 05 06
ALZ 41 4C 5A 01 43 4C 5A 02
RAR 52 63 72 21 1A 07 3D 7B 00 40 07 00

 

그럼 뒤에도 확인해보자

엇 나는 똑바로 되어있음...

 

 

아 !!!!!!!!!!!!!!!!!!!!

그럼 아까 TweakPNG에 올릴 때 뒤에 찌꺼기 찾았다는게 이거였나봄

새로 다운 받아서 확인해보니까 뒤에 FF D9 가 추가되어 있는 것을 확인해볼 수 있당 !

 

 

 

 

근데도 변한게 없다..............

미르스띤 보니까 

내가 패킷 순서를 잘못 이해 한듯 싶다.

 

포렌식 교육 OT 공부 블로그에서 써놓은 것을 보면 IDAT 청크 여러개 존재 가능하다 했다.

이전 블로그 캡쳐 

 

따라서

[fcTL-IDAT] 구조가 여러개 가능하다는 말이 아니라

fcTL-IDAT-IDAT-IDAT-.... 이렇게 IDAT가 여러개 가능하다는 말 

 

따라서 중간에 fcTL seq#=1이랑 7000번대 크기였던 IDAT를 짝지어 2번째 구조로 넣는 것이 아닌

IDAT를 연속 두개 놓고

 

그 다음 fdAT에 대한 fcTL이 seq#=1 이었던 것임 

 

ㄷ.ㄷ;;

 

 

그래서 다음과 같이 고쳐준다 !

fcTL-IDAT-IDAT 한 프레임과 fcTL-fdAT 한 프레임

총 두 프레임으로 이루어진 APNG 인 것이당 !!

 

 

 

 

사실 이래도 움직이지 않는게 정상이다.

왜냐면 이 파일이 PNG로 되어있기 때문임

 

 

 

그래도 APNG이기 때문에 다른 프레임의 사진이 존재할 것이다.

어떻게 분리할 것이냐?

 

바로 ubuntu에서 apngdis 명령어로 !!

 

일단 update 하고~

 

 

APNG를 각 프레임으로 분리해주는 apngdis를 설치하자~

 

 

오~ frame 1과 2로 분리 완료 !!!

 

 

 

확인해보니 두개로 나왔다잉~~~~~~~~~~

 

 

 

 

 

해결~

'challenge > forensic' 카테고리의 다른 글

[N0Named] infect 풀이 (수정)  (0) 2021.01.25
[N0Named] [C] 조별과제_배드엔딩  (0) 2021.01.18
[N0Named] [A] 회사 찾기  (0) 2021.01.18
[N0Named] RE: xsh_derev 풀이  (0) 2021.01.18
[N0Named] magicIMAGE 풀이  (0) 2021.01.12
Comments