728x90
우선 문제 페이지에 접속하면 아래와 같은 페이지를 확인할 수 있었다.
미션 부분을 보면 'flag.php' 파일을 읽어오라고 하는 것을 볼 수 있었다. 읽어야할 부분을 클릭하니 빈 화면 뿐이었다. 여기서 어떻게 해결하면 좋을지 찾아보다 보니 업로드된 파일이 php 파일이지만 숨김 파일로 간주되었다는 것을 알 수 있었다.
이러한 문제의 경우 .htaccess 를 이용한 php 실행 금지를 풀 수 있다고 한다.
.htaccess
“hypertext access”의 약자로, 파일명 앞의 점은 숨김 파일이란 뜻이다.(보통 시스템 파일 앞에 이렇게 점을 붙여 숨김 파일로 만든다.) 이 파일은 디렉토리에 대한 설정 옵션을 제공한다.
▶ 아파치같은 웹서버에서 브라우저같은 클라이언트에서 접근할 때 어떤 식으로 서비스를 제공할 지 apache2.conf와 sites-enabled 가상 호스트 설정 파일을 통해 결정하는데, 이때 서비스할 파일이 위치한 곳의 디렉토리 경로를 지정하게 된다. 그리고 이 디렉토리에 접근을 허용할지 말지, 어떻게 보여줄지 등을 정하게 된다.
https://devlog.jwgo.kr/2019/04/11/what-is-htaccess/
따라서, 파일 업로드 디렉토리에 .htaccess 파일을 만들고 해당 파일에서 php 파일을 실행하지 않게 설정하면, 텍스트 파일로 인식하게 하여 php로 업로드 된 파일의 소스코드를 텍스트 형태로 볼 수 있다.
메모장에 다음과 같이 작성하고
php engine off
특정 디렉터리에서 php 기능을 수행하지 못하도록 금지하는 역할
파일 이름을 다음과 같이 설정한 후 저장해주었다.
파일을 업로드하니 파일이 해당 경로에 업로드 되었음을 알리는 문구가 함께 나왔다.
이제 다시 flag.php 파일에 접속해보니 아래와 같이 플래그 값을 확인할 수 있었다!
문제 해결 완료!!
728x90
'CTF' 카테고리의 다른 글
[RootMe] File upload - Double extensions write-up (0) | 2023.10.02 |
---|---|
[RootMe] Install files (0) | 2023.10.01 |
[Dreamhack] image-storage write-up (1) | 2023.10.01 |
[Webhacking.kr] old-12 write-up (0) | 2023.09.24 |
[RootMe] Javascript - Webpack (0) | 2023.09.23 |