Write-up

[SECURITYFEST 2018] Mr.reagan

ch4rli3kop 2018. 6. 3. 22:14
반응형

문제를 볼 수가 없다... 대회 끝났지 얼마 되지도 않은 거 같은데 벌써 서버가 닫혔나보다.. 대충 문제 설명을 하자면 이미지 파일하나 던져주고 이 이미지 파일이 사용되었던 흔적을 찾으라는 거였다.

파일 시스템과 관련된 문제다. NTFS 파일 시스템을 사용하는 이미지 파일인거 같으니 FTK imager로 분석해보자.


해당 이미지 파일이 사용되었는지를 물어보니, 해당 시스템이 사용하고 있는 파일 시스템에 대한 메타 데이터들을 살펴보도록 하려 했는데,

orphan 디렉토리에 어떤 파일들이 있는 것이 보인다. ftk imager에서 보여주는 orphan 디렉토리는 어떤 폴더가 삭제되었었을 때 표시되는 디렉토리이다. 좀 더 자세히 설명하면, 상위 디렉토리는 삭제된 뒤 덮여쓰여져 복구할 수 없지만 하위 파일들이 잘 남아있는 경우, 즉 파일은 손상되지 않았지만 파일 구조가 손상되었을 경우에 표시된다.


임의로 삭제된 흔적이므로 매우 의심이 가는 항목이다. 냉큼 orphan 디렉토리에 있는 파일들을 확인하니 NTFS 파일 시스템의 메타 데이터들이 있다. NTFS 파일 시스템의 메타 파일들은 다음과 같다.

http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?cmd=print&seq=19518&menu_dist=2


아무튼 문제의 취지와 대충 맞는 파일들인 거 같으니 그 내용을 들여다 보면, 정상적인 데이터가 아니라 base64 encoding된 데이터 값이란 것을 알 수 있다. 중구난방으로 되어있기 때문에 여러 조합으로 base64 decoding을 해보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import itertools
from base64 import *
 
= []
= ""
= open("encode","r")
while True:
    b = f.readline()
    if not b: break
    a.append(b[:-1])
 
print(a)
 
for x in itertools.permutations(a):
    c = ""
    for y in x:
        c += y
    #print(c)
    print(b64decode(c + "=="))
 
cs




반응형

'Write-up' 카테고리의 다른 글

[SECURITYFEST 2018] sshnuke writeup  (0) 2018.06.03
[SECURITYFEST 2018] zion writeup  (0) 2018.06.03
[SECURITYFEST 2018] everywhere writeup  (0) 2018.06.03
[N1CTF 2018] vote write up  (0) 2018.03.14
[Harekaze CTF 2018] Flea attack writeup v2  (0) 2018.02.27