2주차 포렌식

챠챠비둘기·2022년 11월 17일
0

전체세션

목록 보기
2/6

ctf-d 4번


파일을 분석하면 플래그 값을 얻을 수 있는 문제인 것 같다. 일단 파일을 열어보자.

뭔지 모르겠으니, 일단 hxd를 켜서 파일을 분석해 보았다.

파일의 시그니처는 1F 8B 08로, 인터넷에서 찾아보니

gz 형식의 파일이었다. 파일의 숨겨진 형식이 뭔지 알았으니 파일의 확장자를 gz로 바꾸어 보았다.

그 후, gz로 바꾼 파일의 압축을 풀어보았다.

압축을 푼 후, 나온 flag파일을 다시 hxd에서 열어보니

플래그 값을 발견했다.

문제 해결!! 시그니처 값으로 파일의 형식을 알아내고, 이를 통해 파일의 확장자를 변경한 후 압축을 다시 풀어서 얻어낸 파일로 플래그를 얻어내는 문제였다.

과제 2-1

일단 문제를 살펴보자.

흠....이 메모 파일을 통해서 플래그 값을 찾아내는 문제인 것 같다.
힌트를 보자

??
일단 모르겠으므로 hxd로 파일을 분석해 보자.

.txt 형태의 파일은 시그니처가 존재하지 않는다. 아무래도 시그니처에서 문제의 단서를 발견할 수 없을것 같다. 숨겨진 시그니처를 아무리 찾아봐도 나오지 않고, zip파일도 분석해 보았으나 딱히 이상한 점은 없었다.
여기서 힌트의 내용을 곰곰히 생각해 보면, mail.txt의 내용 속에 플래그가 있을 것이라고 생각해 볼 수 있겠다. 만약 문자열 속에 플래그가 있다고 가정하면, 어떻게 플래그를 숨겼을까? 아마 인코딩을 이용했을 것이라고 생각한다.🤔 그럼 mail.txt의 내용을 디코딩 하여, 플래그 값이 나오는지 알아보자.
이런 긴 문장을 디코딩 할 수 있는 유용한 사이트가 있다.

링크텍스트



문자열 디코딩을 통해 플래그 값을 얻을 수 있다.😎😎

과제 2-2

압축을 해제해 보니, 어떠한 힌트 없이 사진 파일 하나만 있다.

흠...? 일단 hxd를 켜보자.

일단 jpg 파일의 시그니처(헤더, 푸터)가 정상적으로 존재한다. 아무래도 시그니처를 건드는 문제는 아닌 것 같다. 계속 헥스값을 살펴보니 무언가 이상하다. jpg 파일의 시그니처 값은 FF D8 FF E0이고 footer 값은 FF D9인데, 문제는 이 시그니처 값과 footer 값이 각각 2개씩 존재한다는 것이다. 그럼 FF D9와 FF D8 FF E0 사이에 존재하는 값은 무엇일까? 이 값들을 분석해 보기 위해, 따로 복사해서 파일을 만들어 봤다.


시그니처의 값이 mp4인 숨겨진 파일을 발견했다. 어쩐지 헥스값이 너무 많다 싶었다. 이걸 따로 저장한후, 파일의 확장자를 .mp4로 바꾸어 주면


플래그 값을 발견했다. 시그니처 값과 footer를 이용해 숨겨진 파일을 찾는 문제였다.

과제 2-3

일단 압축을 풀어보면 귀여운 여우 사진이 여러장 들어있다.

힌트를 살펴보자.

잘 모르겠다. 일단 문제를 분석해보자.
사진 파일이 총 5장인데, hxd를 이용하여 값을 비교하는 문제일까 싶었지만, 너무 번거로워 이렇게 푸는 것은 아닌 것 같다. 그 대신, 압축파일을 hxd를 통해 분석해 보자.

일단, 압축 파일에 숨겨진 파일이 있나 싶어 footer 부분을 분석해 보았다.

...아닌듯😅
그런데 압축파일의 local file header signature의 개수와 cetral directory file header signature의 개수가 조금 이상하다. end of central directory file signature의 개수는 압축파일 하나당 한개만 존재하지만 local file header signature와 central directory file header signature의 경우 파일당 각각 1개씩 존재해야 하기 때문이다. 문제는, local file header의 개수는 7개인데 반해, cetral directory file header의 개수는 6개이다. 즉, 압축파일에 숨겨진 파일 하나가 더 있고, 이 파일의 central directory file header를 복구해야 압축파일에 숨겨진 파일이 나타날 것이란 걸 알 수 있다.

링크텍스트

위 사이트를 참조하여, 숨겨진 파일의 central directory file header를 만들고 삽입시켜 보았다.
일단, 숨겨진 파일의 local file header에서 정보를 얻고, 이를 기반으로 central directory file header를 만들었다.


저장 후에, 압축 파일을 다시 열어보니

숨겨진 파일 하나를 발견했다.

압축을 해제하면, 커여운 개사진과 플래그 값이 나온다.
header signature의 개수를 이용해 숨겨진 파일을 찾고, 헤더의 헥스값을 직접 구성하고 삽입하여 숨겨진 파일이 나타나게 하는 문제였다. 개인적으로 헤더의 헥스값을 직접 구해야 했던 게 조금 번거로웠던 것 같다.😅 좀 더 쉬운 방법이 있는지 생각해 봐야 할 것 같다.

profile
개발 + 보안

0개의 댓글