1. 문제 다운로드
File Name : FILE
Hash : 3D83A054D614D58E3D9E049132B47BEC0F521BE5 (SHA-1)
2. 문제 풀이
hxd를 이용하여 파일의 데이터를 살펴봤다.
파일의 이름과 확장자를 찾아야 풀 수 있는 문제이다.
문제 이름에서 힌트를 얻어, LFN이 무엇인지 검색했다.
답을 얻기 위해서, 실질적으로 살펴봐야하는 데이터이다.
코드를 작성하고 플래그를 얻을 수 있었다.
플래그가 다 출력되고 나서 쓰레기값이 섞여나온다.
확장자까지 출력되고 난 이후의 데이터는 무시해도 된다.
import struct
def parseLFN(data, start) :
#seqNum = data[start]
name1 = data[start+1:start+11]
#attr = data[start+11]
#checksum = data[start+13]
name2 = data[start+14:start+26]
name3 = data[start+28:start+32]
filename = list()
filename.extend(list(struct.unpack('<HHHHH', name1)))
filename.extend(list(struct.unpack('<HHHHHH', name2)))
filename.extend(list(struct.unpack('<HH', name3)))
for c in filename :
print(chr(c),end='')
f = open("FILE", "rb")
data = f.read()
f.close()
parseLFN(data,0x80)
parseLFN(data,0x60)
플래그 형식에 맞춰서 데이터를 입력하면 인증이 완료된다.
3. 비고
파일시스템에 대한 공부가 부족했다는 것을 느꼈고 근 시일 내에 정리하여 포스팅해야겠다.
'writeup > Wargame' 카테고리의 다른 글
Dreamhack / Reverse Engineering / rev-basic-9 writeup (0) | 2021.01.18 |
---|---|
Dreamhack / Reverse Engineering / rev-basic-series (0) | 2021.01.17 |
Dreamhack / Reverse Engineering / rev-basic-9 (Hint) (0) | 2021.01.17 |
DigitalForensic with CTF / Network / DefCoN#21 #2 (0) | 2020.08.31 |
DigitalForensic with CTF / Network / DefCoN#21 #1 (0) | 2020.08.31 |