Link4Escape · 파일 다운로드 보안 문제 제작
📁

Link4Escape · 파일 다운로드 보안 문제 제작

기간
2025년 5월 2일 ~ 2025년 5월 7일
역할
개인 프로젝트 · 문제 제작과 풀이 작성
기술 스텍
Express
Node.js
HTML
CSS
JavaScript
Docker
팀원
개인
2025.05.02 ~ 2025.05.07 · 개인 프로젝트

경로 문자열 검사와 실제 파일 경로의 차이를 문제로 만들었습니다.

Express로 파일 다운로드 취약점을 다루는 CTF 문제를 제작했습니다. 디렉터리 이동과 심볼릭 링크를 단계별로 활용해 정답 파일에 도달하도록 구성하고, Docker 환경과 풀이 문서를 함께 정리했습니다.

직접 구현한 내용

  • 파일 다운로드와 쿠키 확인 흐름을 구성하고, 소스와 HTML 주석에 풀이 단서를 넣었습니다.
  • Docker에서 심볼릭 링크가 있는 파일 구조를 만들어 같은 환경에서 문제를 실행할 수 있도록 했습니다.
  • 다운로드 경로를 검증하는 코드를 살펴보고, 각 단서에서 다음 단계로 이어지는 풀이를 작성했습니다.

문제의 핵심

path.resolve()로 정규화한 경로는 심볼릭 링크가 가리키는 실제 위치와 다를 수 있습니다. 문자열이 기준 디렉터리로 시작하는지만 검사하면, 내부 링크를 통해 다른 디렉터리의 파일에 접근하는 경우를 놓칠 수 있습니다.
문제에서는 디렉터리 이동으로 쿠키를 얻은 뒤, HTML 주석의 Base64 단서로 힌트 파일을 찾습니다. 마지막에는 링크된 디렉터리 아래의 정답 파일을 다운로드합니다.

사용 기술

Node.js · Express · HTML · CSS · JavaScript · Docker

문제 화면과 풀이 기록 보기

1. 소스파일 확인

notion image

2. 쿠키 파일 획득

notion image

3. 쿠키값 입력 및 hint.png 획득

notion image
notion image
notion image

4. path.resolve 우회

notion image
notion image
notion image

5. 정답 flag

notion image
file_Download_Vulnerability
jeonchan05 • Updated
PagenowMade with Pagenow