본문 바로가기

[+] Hacking/[-] Challenge Report

GitS CTF Packet 200 풀이

주로 CTF 문제를 구할 때 방문하는 Shell-Storm 사이트에서 해당 문제를 발견하여 풀어보았다. 고급 기술을 요하는 문제는 아니고 어느정도의 노가다(?)를 요구하는 문제이다. 문제로는 packet 카테고리의 문제니 당연히 패킷 파일이 하나 주어진다.(처음에는 7z로 압축 되어 있음) 패킷을 열어보면 바로 첫페이지에 당당하게 key.jpg라는 파일 이름이 보인다.



[그림 1 - key 값이 들어있을 법한 jpg 파일명]


HTTP로 주고 받은 듯 하니 File Object 기능으로 해당 파일을 추출 해 보자.


[그림 2 - 나누어져 있는 jpg 파일]


주고 받은 파일은 key.jpg 파일 하나인데 여러개로 잘개 나누어져 있다.(문제 풀이 과정에서 pcap 파일에서 jpg 파일만 카빙을 시도했었지만 쓰레기 데이터가 존재해 카빙은 제대로 이루어지지 않았다.)

예상했겠지만 수작업으로 jpg를 복구해야 한다. Save All 버튼을 눌러 해당 파일들을 모두 저장하여 보면 다음과 같이 몇개는 정상적으로 보인다.


[그림 3 - pcap 파일에서 추출한 jpg 파일들]


각 파일들의 크기를 보면 어떠한 파일들의 크기는 1MB를 넘어가지 않으며 어떤 파일들은 1KB를 훌쩍 넘겨버린다. 쓰레기 데이터라고 생각할 수도 있지만 이 파일들 모두 조각의 일부분이다. 현재 복구가 그나마 되어 있는 key(11)과 같은 jpg 파일에 다음에 오는 복구된 파일(key(26).jpg [그림 3]에서 잘려 보이는 복구된 파일이다.)의 앞 파일까지 바이너리 데이터를 모두 합쳐주면 어느정도 jpg가 복구 되는 것을 알 수 있다. key(1).jpg부터 key(100.jpg까지 복구한 이미지는 다음과 같다.(key(1).jpg는 헤더와 푸터가 뒤바껴 있어 푸터를 바이너리 데이터 뒤로 다시 삽입해주면 정상적으로 이미지가 보인다.)


[그림 4 - key(1~10).jpg]


이러한 노가다를 조금 하다보면 다음과 같은 이미지를 만들 수 있다.


[그림 5 - key(26~33).jpg]


이미지가 완벽하게 복구 되지는 않지만 대충 안젤리나 졸리의 사진인 것을 파악 할 수 있으며 키 값 또한 발견 할 수 있다.

이미지에 있는 키 값은 Base64 값으로 디코딩하면 다음과 같다.


Key : Submb4In60SHcondsOrBHGone