<aside> <img src="/icons/skull_yellow.svg" alt="/icons/skull_yellow.svg" width="40px" />

파일 시스템

**윈도우 (Windows)**는 기본적으로 마이크로소프트의 Internet Information Services (IIS) 웹 서버를 제공합니다. 또한 Apache나 Nginx와 같은 다른 웹 서버 소프트웨어도 사용 가능합니다.

윈도우의 주요 특징:

이는 대부분이 파일로 구성되어 파일 접근만으로도 특정 기능을 수행할 수 있는 유닉스 계열 운영 체제와는 다른 특성입니다.

로그 및 데이터 파일

운영 체제 및 서비스의 로그와 각종 문서가 저장되는 위치를 의미합니다.

디렉터리 설명
C:\inetpub IIS 서비스에서 웹 문서 및 기타 웹 서버에서 사용하는 파일을 저장합니다.
C:\inetpub\wwwroot IIS의 웹 문서가 저장되는 기본 경로입니다.
C:\ApacheXY\htdocs, C:\www Apache Web Server에서 문서 경로로 흔히 사용되는 디렉터리입니다.
C:\Program Files 각종 프로그램 및 데이터를 저장할 때 사용합니다. 데이터베이스 등이 이에 속합니다.
C:\ProgramData 시스템의 각종 서비스에서 자료를 저장할 때 사용합니다. 데이터베이스 등이 이에 속합니다.
C:\ProgramData\MySQL\MySQL Server X.Y\Data MySQL 데이터베이스의 데이터가 일반적으로 이곳에 저장됩니다.
C:\Program Files\PostgreSQL\X.Y\data PostgreSQL 데이터베이스의 데이터가 일반적으로 이곳에 저장됩니다.
C:\Windows\System32\Winevt\Logs 윈도 이벤트 로그를 저장할 때 사용합니다.
C:\Windows\Prefetch Superfetch 데이터를 저장합니다. 최근 사용한 애플리케이션 목록 등을 조회할 수 있습니다.

설정 파일

운영 체제 및 서비스를 구성하는 설정 파일을 의미합니다.

디렉터리 설명
C:\Windows\System32\config 시스템 단위 레지스트리 하이브 파일이 저장됩니다.
C:\Boot 부팅 관련 파일을 저장합니다. EFI 기반 시스템에서는 EFI 시스템 파티션에 저장됩니다.
%UserProfile%\Ntuser.dat %UserProfile% 프로필 디렉터리를 가진 사용자의 레지스트리가 저장됩니다.
%UserProfile%\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat %UserProfile% 프로필 디렉터리를 가진 사용자의 확장자 연결 정보 및 COM 클래스 등이 저장됩니다.
C:\Windows\drivers\etc hostsservices와 같은 네트워크 관련 설정 파일을 저장합니다.
C:\Program Files\Apache Software Foundation\Apache<버전>\conf Apache Web Server의 설정 정보를 저장합니다.
파일 설명
C:\Boot\BCD Boot Configuration Data 파일이 위치합니다.
C:\ProgramData\MySQL\MySQL Server X.Y\my.ini MySQL 데이터베이스 서버의 주 설정파일입니다.
C:\Windows\System32\drivers\etc\hosts 호스트네임의 실주소를 탐색할 때 사용되는 정적 순람표입니다.

프로그램 및 라이브러리

프로그램의 명령어가 저장된 위치와 이들을 실행하기 위한 라이브러리의 위치입니다.

디렉터리 설명
C:\Program Files 각종 프로그램 및 데이터를 저장할 때 사용합니다. 데이터베이스 등이 이에 속합니다.
C:\Windows\System32 시스템 파일 및 DLL들이 위치합니다.
C:\Windows\SysWOW64 32비트 호환(Windows-on-Windows) 레이어상 시스템 파일 및 DLL들이 위치합니다.

장치 및 가상 파일

운영 체제를 구성하기 위한 파일을 의미합니다.

디렉터리 설명
\\.\ Win32 장치 파일을 접근하는 경로의 시작을 나타냅니다. NULCON 과 같은 기본 장치 이름은 시스템 라이브러리에서 자동으로 인식되어 \\\\.\\을 사용할 필요는 없습니다.
\\?\ NT 객체 관리자 하위체계(Object Manager Subsystem, Ob)의 객체 및 심볼릭 링크 등을 접근하는 경로의 시작을 나타냅니다. 기본 경로는 \\\\.\\와 같습니다.
\\?\GLOBALROOT\ 실제 Object Manager의 최상위 경로를 접근하는 경로입니다.
\\?\GLOBALROOT\Device NT 장치 객체를 포함하는 디렉터리입니다.
\??\ \\\\?\\ 와 동일하게 사용할 수 있습니다. 단, 와일드카드 등의 문자가 다른 의미를 지니게 되어 주의가 필요합니다.
\\<호스트명>\<공유명>\ 네트워크상에 공유된 자원에 접근할 수 있는 UNC 경로를 나타냅니다.
장치 파일 설명
NUL, CON, AUX, PRN, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, LPT4 예약된(reserved) DOS 기본 장치 이름입니다. \\\\.\\NUL과 같이 사용할 수도 있습니다.
CON (\\.\CON) 현재 콘솔 장치를 나타냅니다.
CONIN$ (\\.\CONIN$) 현재 콘솔 입력 장치를 나타냅니다.
CONOUT$ (\\.\CONOUT$) 현재 콘솔 출력 장치를 나타냅니다.
\\?\GLOBALROOT\Device\HarddiskVolume<N> 다른 드라이브를 선택할 때 C:\\와 같은 문법 대신 사용할 수 있습니다.

임시 파일

운영 체제 및 서비스에서 사용하는 임시 디렉터리를 의미합니다.

디렉터리 설명
C:\Windows\Temp 임시 파일을 저장합니다.
%UserProfile%\AppData\Local\Temp 일반적으로 사용자별 임시 파일이 저장되는 경로입니다.
</aside>

윈도우 파일 및 경로

파일명

경로 변환

경로 실제 경로
C:/Windows C:\Windows
C:\htdocs\upload/foo/bar C:\htdocs\upload\foo\bar
C:\htdocs\upload\baz/../../../Windows C:\Windows
\\?\C:\htdocs\upload\qux\../.. C:\htdocs\upload\qux\../..
\\?\C:\htdocs\upload\quux\../..//./ C:\htdocs\upload\quux\../..//./

드라이브 및 디바이스 경로

유형 형식 예시
드라이브 내 절대 경로 \\{경로명} \\Windows\\system32\\calc.exe
\\Build\\DreamhackExample\\Lib\\x86\\..\\Common\\LfdTypes.h
드라이브 내 상대 경로 {경로명} Documents\\desktop.ini
..\\..\\..\\..\\Dir1\\..\\..\\..\\Users
Win32 장치 경로 \\\\.\\{장치 경로명} \\\\.\\NUL\\\\.\\CON,\\\\.\\PRN\\\\.\\AUX\\\\.\\COM1\\\\.\\COM2\\\\.\\COM3\\\\.\\COM4\\\\.\\LPT1\\\\.\\LPT2\\\\.\\LPT3\\\\.\\LPT4
\\\\?\\PIPE\\{파이프명} - Windows NT Pipe 객체 (IPC)
UNC 경로 \\\\{서버}\\{공유명}[\\{경로}]
\\\\?\\UNC\\{서버}\\{공유명}[\\{경로}] \\\\smb.dreamhack.io\\share
\\\\?\\UNC\\smb.dreamhack.io\\share
\\\\?\\localhost\\c$\\Windows\\
\\\\?\\127.0.0.1\\c$\\Windows\\
NT 객체 경로 \\\\?\\{객체 경로명} (경로명 그대로 사용)
\\??\\{객체 경로명} (..와 같은 요소가 경로에 포함될 경우 자동 확장 처리되어 특수 파일명을 사용할 수 없음) \\\\?\\C:\\Windows\\system32 (드라이브 절대 경로와 유사하나 특수 문자 및 파일명 사용 가능)
\\\\?\\GLOBALROOT\\Device\\HarddiskVolume1\\C:\\Windows\\system32 (드라이브 대신 볼륨명을 사용할 수도 있음)
\\\\?\\GLOBALROOT\\SystemRoot
드라이브 절대 경로 {드라이브 문자}:\\{경로} C:\\Windows\\system32\\calc.exe
C:\\Users\\dream\\Documents\\crackme\\..\\README.md
F:\\Media\\Intro.mp4
드라이브 상대 경로 {드라이브 문자}:{경로} C:notes.txt
C:Foo\\bar.obj
D:..\\Test\\other.doc

별칭 부여 규칙

  1. 파일명은 대문자로만 이루어져야 합니다. 소문자는 모두 대문자로 자동 치환됩니다.
  2. 스페이스, ASCII 제어 문자(STXESC 등) 및 ASCII 외 문자 (확장 문자집합이 활성화된 경우 제외)는 모두 제거됩니다.
  3. '+'와 같은 특수 문자는 밑줄 ('_') 문자로 치환됩니다.
  4. 파일명과 확장자는 각각 8바이트와 3바이트 이하의 문자열로 이뤄져야하며, 각 요소 모두 '.' 문자를 포함할 수 없습니다. Dreamhack.jpg와 같이 고정 버퍼를 초과하는 파일은 DREAMH~1.JPG로 변환되며, Dreamhack.html는 DREAMH~1.HTM와 같이 변환됩니다.