File upload - ZIP
index.php 파일을 읽으면 된다.
문제 화면으로 들어가면 파일을 선택하여 업로드할 수 있는 기능이 있다.
문제풀이
업로드 기능을 이용하여 .php파일을 압축한 .zip 파일을 업로드해보면
다음과 같이 파일의 압축을 풀 수 있도록 해준다.
File unzipped here을 눌러보면
다음과 같은 페이지로 이동하며
/tmp/upload 디렉토리에 해쉬값으로 변경되어 저장됨을 알수있고
압축했던 test.php을 열려고 하면
다음과 같이 접근이 제한됨을 알 수 있다.
내가 올린 파일로 공격은 할 수 없을 것 같다.
index.php에 직접적으로 접근해야 할 방법을 찾다보니
symbolic link를 이용하여 공격하는 방법을 찾게되었다.
파일을 업로드하면 /tmp/upload/해쉬된 디렉토리에 파일이 생성되기에
index.php가 있을 것이라고 생각되는 /ch51 디렉토리에 있는 index.php를 가리키는 symbolic link를 생성해준다.
이후 이 파일을 zip을 해준다.
(symbolic link는 zip할 때 --symlink 옵션을 주지 않으면 일반 파일,디렉토리로 인식하여 압축하게 된다.)
그리고 위의 a.zip 파일을 업로드해주게되면
a.zip이 공격하는 사이트의 내부에서 unzip되기 때문에 ../의 절대경로가 서버쪽의 디렉토리를 가리키게 되어 우리가 원하는 index.php를 얻을 수 있을 것이다. (내 생각)
../../../index.php를 가리키는 link가 있고 이를 누르게 되면
index.php를 보여주고 안에 있는 flag를 통해 문제를 풀 수 있다.
'Web hacking > Root me' 카테고리의 다른 글
[Root-me] - Command injection - Filter bypass (0) | 2019.12.07 |
---|---|
[Root-me] - PHP - Eval (0) | 2019.12.03 |
[Root-me] - Local File Inclusion - Wrappers (0) | 2019.11.30 |
[Root-me] PHP - Serialization (0) | 2019.11.16 |
[Root-me] SQL injection - Error (0) | 2019.10.07 |