<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 | hosts , services 와 같은 네트워크 관련 설정 파일을 저장합니다. |
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 장치 파일을 접근하는 경로의 시작을 나타냅니다. NUL , CON 과 같은 기본 장치 이름은 시스템 라이브러리에서 자동으로 인식되어 \\\\.\\ 을 사용할 필요는 없습니다. |
\\?\ | 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> |
.
또는 스페이스 문자가 포함될 경우 이를 자동으로 제거
Shell.php.. . . ...
와 같은 파일명은 운영 체제에서 Shell.php
로 해석/
를 \\
로 변환 → 이를 이용해 공격가능
경로 | 실제 경로 |
---|---|
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\../..//./ |
=C:
, =D:
와 같은 환경 변수를 통해 각각의 드라이브의 위치를 저장
유형 | 형식 | 예시 |
---|---|---|
드라이브 내 절대 경로 | \\{경로명} |
\\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 |
STX
, ESC
등) 및 ASCII 외 문자 (확장 문자집합이 활성화된 경우 제외)는 모두 제거됩니다.Dreamhack.jpg
와 같이 고정 버퍼를 초과하는 파일은 DREAMH~1.JPG
로 변환되며, Dreamhack.html
는 DREAMH~1.HTM
와 같이 변환됩니다.