date : `17.02
Got an artefact file to be analysed. Can you please help me find the hidden data ?
artefact 파일 하나가 주어진다.
1
2
3
4
5
6
7
|
root@nopdata:/home/iy/ctf/nullcon# file artefact
artefact: XZ compressed data
root@nopdata:/home/iy/ctf/nullcon# mv artefact artefact.xz
root@nopdata:/home/iy/ctf/nullcon# unxz artefact.xz
root@nopdata:/home/iy/ctf/nullcon# file artefact
artefact: Linux rev 1.0 ext3 filesystem data, UUID=c6666f0c-f641-4958-be07-bcc6540fdafd (large files)
root@nopdata:/home/iy/ctf/nullcon# ls
|
cs |
파일을 확인해보면 xz파일인 것을 알 수 있으며 unxz명령을 통해 압축을 풀면 ext리눅스 시스템인 것을 알 수 있다.
파일 시스템이므로 ftk를 이용하여 분석을 해 보았는데 root 하위 폴더에는 아무것도 존재하지 않았다.
해서, 파일이 삭제 되었을 것이라는 가정 하에 unallocated 영역을 조사하였다. ext 시스템의 경우 파일이 삭제되면 unallocated에 데이터가 남는 경우가 많았기 때문이다.
해서 조사를 해 보니 시작부분에 JFIF가 보였고 jpg로 변경을 하니 답을 얻을 수 있었다.
이는 ftk를 이용한 윈도우 상의 풀이이고, 콘솔 형태에서도 지워진 파일을 복구하는 것이 가능하다.
root@nopdata:/home/iy/ctf/nullcon# extundelete artefact --restore-all
이 명령을 이용하면 지워졌던 파일이 모두 복구가 되는데, 더미 쓰래기 파일까지 복구가 되므로 여기서 구하고자 하는 데이터를 잘 추려내는 것이 중요하다.
먼저 flag가 어디있는지 힌트 정도는 존재할 것이라고 생각하고 string에서 flag를 조회보면 다음과 같이 나온다.
1
2
3
|
root@nopdata:/home/iy/ctf/nullcon/RECOVERED_FILES# fgrep "flag" * -r
file_system/12 OcjNU .txt: flag text is somewhere inside
root@nopdata:/home/iy/ctf/nullcon/RECOVERED_FILES#
|
cs |
filesystem폴더 하위에 존재한다는 힌트가 있으므로 이 곳을 보면 된다. 하지만 이 문제의 경우 데이터의 양이 적지만, 다른 문제의 경우에는 많을수도 있다.
그 때 조회하는 방법은 foremost * 또는 head를 확인해 보는 방법이다. 이 문제의 경우 파일 복구가 불가능 하도록 윗 부분이 깨져 있기 때문에 header를 조회하는 방법을 사용해야 한다.
일단 이번 문제를 풀어보기 위해 간단히 작성한 소스이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import os
import subprocess
res = list()
for ch in os.listdir('.'):
try:
data = subprocess.check_output('xxd "'+ch+'" | head -1', shell=True)
if len(data) < 1:
raise "no file"
res.append((data,ch))
except:
pass
f=open('result.txt','wb')
f.write("res = "+str(res))
f.close()
|
cs |
같은 경로에 파일들의 head를 확인하는 소스이다. 파이썬 콘솔형태가 편해서 다시 list사용이 가능하도록 만들어놨다.
답이 되는 flag파일은 ts8U 하위에 존재한다.
1
2
3
|
root@nopdata:/home/iy/ctf/nullcon/RECOVERED_FILES/file_system/ts8U# xxd c0pmcYvxe | head -1
0000000: 0000 0000 0010 4a46 4946 0001 0101 0078 ......JFIF.....x
root@nopdata:/home/iy/ctf/nullcon/RECOVERED_FILES/file_system/ts8U#
|
head를 보면 JFIF를 볼 수 있고 이를 보고 판단을 하여 jpg를 추출해주면 된다.
flag : flag{i_h@te_stupid_color$}
'CTF | wargame' 카테고리의 다른 글
nullcon17 / Crypto Question 2 (Diffie-Hellman key 교환) (0) | 2017.03.10 |
---|---|
nullcon17 / Misc 1 (숨겨진 flag찾기, script 난독화 언어) (0) | 2017.03.10 |
nullcon17 / Web 1 (X-Forwarded-For, 클라이언트 IP변경) (0) | 2017.03.10 |
nullcon17 / Web 2 (쿠키에 저장된 계정 정보) (0) | 2017.03.10 |
nullcon17 / Web 3 (curl boolean 공격, 결과를 확인할 수 없는 페이지의 시간차 공격, python shell code 전송) (0) | 2017.03.09 |