
Web 200 – FileHosting
이 문제는 LFI(Local File Inclusion)을 이용한 문제다. 목표는 Flag.txt를 열어보는 것.
파일의 경로가 file/Flag.txt여서 URL에 file/Flag.txt를 치고 들어가보지만 404. 실제 경로는 다르다는 것을 알았다.
링크가 걸린 파일들의 링크를 살펴보면 base64를 볼 수가 있다. 이들을 각각 디코딩 해보면 Flag.txt
, Hello.txt
로 나온다.

URL에 포함되어 있는 Base64
그렇다면 현재 download.php
의 작업 경로는 file 폴더일 것이다. Flag.txt를 다운받기 위해선 download.php가 무엇을 하는지 알아볼 필요가 있다. 그렇다면 download.php를 어떻게 다운할까?
download.php의 위치는 file 폴더의 상위 폴더에 있다고 가정하고 ../download.php
를 base64로 인코딩한다. Li4vZG93bmxvYWQucGhw
라는 값이 나오게 된다.
이 인코딩한 값을 URL의 f
에다가 집어넣고 엔터를 누르면 성공적으로 download.php를 다운받게 된다!

download.php의 Source code
다운로드한 코드를 살펴보면 Flag.txt를 다운로드 하기 위해선 adm1n_k3y라는 GET의 존재를 필요로 한다.
다시 돌아가서 Flag.txt의 URL 뒤에 &adm1n_k3y
를 붙여주고 다운로드를 시도하면 Flag.txt가 다운로드 된다.
h4ctf{d0wnlo4d_php_f1le}
(여담으로 Write-up을 작성하면서 생각난건데, download.php에 있는 소스를 보고 you_cant_access_this_folder_by_guessing/Flag.txt로 접근해서 다운로드 해도 된다는걸 깨달았다. 뭐 그거나 그거나..)