-
[ctf-d] 플래그를 얻고 싶지만 그럴 수 없다. 아마도 수정이 필요할 것 같다.2022/Write-Ups 2022. 7. 19. 18:451팀 정유진
힌트인 MD5가 무엇일까
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다.
RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다.
그렇다면
해시함수가 무엇이냐,
이미지출처https://www.appsealing.com/kr/%ED%95%B4%EC%8B%B1-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/해시 함수는 특정 입력 데이터에서 고정 길이값 또는 해시값을 생성하는 알고리즘이다.
이해가 퐉 가는 사진이라 첨부한다.
HxD로 다운받은 파일을 열면 헤더 시그니처를 확인할 수 있는데
저 46 49 4C 45 는 FILE이라는 시그니처가 뜬다.
책에서는 MFT 엔트리 구조라고 해서 검색해봤는데 알 수 없었으나...
http://forensic-proof.com/archives/584
NTFS – MFT 엔트리 구조 (MFT Entry Structure) | FORENSIC-PROOF
forensic-proof.com
MFT 엔트리 헤더 정보들을 확인할 수 있었다!!
http://forensic-proof.com/archives/1769
MFT 레코드에서 파일 데이터를 추출해야 해서, 파일 데이터 정보가 담겨있는 $DATA 속성을 찾는다.
앞의 4byte 0x80 00 00 00 으로 시작하며 뒤의 4byte는 $DATA 속성 헤더를 포함한 속성 전체의 길이를 나타낸다고 한다.
속성의 전체 길이는 16진수인 78, 즉 120byte이다.
그다음 1byte에는 Resident 속성과 Non-Resident 속성을 나타내는 값이 나온다.값이 0이므로 Resident를 뜻한다.
이 속성을 가지고 있으므로 해당 MFT레코드 내부에 속성 내용이 있다는 뜻.
또 다음 00 1byte는 속성 이름 길이를 나타내고, 다음 18 00 2byte는 속성 이름이 저장되어 있는 위치를 뜻한다.
속성 이름 길이가 0이기 때문에 속성 이름이 없음, 속성 이름이 저장되어 있는 위치가 속성 내용의 시작 위치가 될 것..?
시작 위치는 헤더의 시작부터 0x18만큼 뒤에 있다는 뜻이 된다.
해당 위치는 0x18 + 0x01A0($DATA시작위치)로 오프셋 0x1B8이 된다.
63 부터 시작된다.
5A 00 00 00은 속성 내용의 크기 90byte이고, 다음 2byte는 속성 내용이 시작되는 위치.
문제 파일로 봤을 때, 헤더의 시작 위치로부터 0x18만큼 뒤에 있다는 뜻
63 부터 0A까지 90바이트 추출하면 되는데 이대로 md5값 구하면 안된다.
왜냐하면, Fixup array 값인데 이부분 다시 확인해봐야겠다... 잘 이해가 안간다
Fixup array 값을 고려해 원본 데이터 값으로 수정하고 데이터를 추출해주면
16진수 그대로 가져와서 md5값 확인하기1fc720433f6eca2e298f65efec695aaa
'2022 > Write-Ups' 카테고리의 다른 글
[DigitalForensic_with CTF] 저는 플래그를 이 파일에.. (0) 2022.07.19 [xcz.kr] Prob 36 (0) 2022.07.19 [ctf-d] 누군가 부정행위를 했다는… (0) 2022.07.19 [ctf-d] Find Key(Movie) (0) 2022.07.19 [ctf-d] 거래 조건 알고 있잖아요? (0) 2022.07.19