본문 바로가기
Forensics/CTF Write-Ups

[SWING 내부 CTF] Who_is_real

by sseddi 2020. 8. 22.
728x90

문제 설명은 딱히 없고 힌트가 두 개 있는 것을 볼 수 있다.

그래서 zip 파일을 먼저 다운받아서 압축을 풀면,

이렇게 그림은 같지만 파일 명은 다른 비트맵 이미지 두 개와 힌트 png를 얻을 수 있었다.

hint에는

인간의 눈으로 볼 수 없다고 나와있다 그래서 HxD를 사용해야 하나보다라고 생각했다.

근데 열어서 비트맵 헤더 시그니처를 봤더니 별다른 이상이 없어서 뭐지 싶었다.

그래서 일단 문제에 있는 힌트를 활용해보기로 했다.

첫 번째 힌트는 리눅스 파일 비교 명령어를 사용해야 한다고 나와있었다.

그래서 리눅스 파일 비교 명령어를 구글링해봤는데 diffcmp가 나왔다.

나는 열심히 diff로 하고 있었는데,, 나중에 두 번째 힌트가 나왔는데 cmp를 사용해야한다고 했다.

그래서 cmp로 두 비트맵 이미지를 비교해본 결과

228771바이트가 다르고, 3707줄이 다르다고 했다.

근데 HxD로 파일을 열어보면 쭉 데이터 값을 볼 수 있는데, 어떻게 저 다른 부분을 알아내는지 모르겠다.

그래서 cmp 명령어의 옵션을 찾아보았는데,

https://guswnsla1223.tistory.com/76

비교하는 두 파일 간 다른 문자 위치와 문자를 출력하는 옵션을 발견할 수 있었다.

그래서 옵션 l을 사용했더니

맨 앞 숫자는 두 파일간 다른 문자 위치인 것 같고 나머지 두 숫자는 두 파일 간 다른 문자를 나타내는 것 같았다.

바이너리 파일이므로 아스키코드로 문자를 표현하는 것 같아 아스키코드 표를 가지고 나타내보기로 했다.

http://suninatas.com/tools

170번대 숫자까지 있는 것으로 보아 Oct 부분을 이용해 문자로 변환하면 될 것 같았다.

그래서 먼저 helltaker.bmp의 부분을 메모장에다가 적어놓고 위의 표를 보면서 하나하나 번역했더니

Flag를 획득할 수 있었다.

성공!

 

출제: N0Named 해킹팀

728x90

댓글