ZIP 파일 업로드 관련 문제입니다.
문제에 접속해보니, 파일을 업로드할 수 있는 화면이 보여집니다.
우선, 테스트 용도로 test.php 파일을 test.zip으로 압축한 후에 업로드를 시도해보았습니다.
zip 확장자를 가진 파일이 정상적으로 업로드 되었으며, 업로드를 완료하니
화면에 해당 파일을 unzip 할 수 있는 버튼이 출력되었네요.
클릭해봅니다.
제가 올린 test.zip 파일의 압축이 풀리면서 해당 파일 내에 있던 test.php 파일이 보이네요.
해당 파일을 클릭해보았습니다.
403 Forbidden 에러가 출력되었습니다.
음,, 일단 404 Not Found 에러는 아니니 파일은 존재하는 것이고,
test.php 파일 위에 있는 8caba7d65b81501f3b65eca199c28ace.zip 파일을 클릭하였을때, 정상적으로 다운받아 지는 것을 보니 서버 내 php 파일 실행 권한이 없는 것으로 보입니다.
해당 문제의 목표는 index.php 파일을 읽어야하는데, 어떻게 해결할지 구글링을 해보다가
리눅스의 symbolic link 파일이 zip 파일로 패킹될 수 있다는 사실을 알 수 있었습니다.
심볼릭 링크란?
특정 파일이나 디렉토리를 참조하는 것으로, 윈도우의 "바로가기"라고 할 수 있다.
-심볼릭 링크 생성 명령어
ln -s [원본 파일 또는 디렉토리] [심볼릭 링크 이름]
-심볼릭 링크 삭제 명령어
rm [심볼릭 링크 이름]
이를 이용해 ../../../index.php 파일을 참조하는 심볼릭 링크 파일을 만들었고,
zip으로 패킹 시 심볼릭 링크를 포함시키는 옵션(--symlinks -r)을 주어 zip 파일을 생성하였습니다.
생성한 zip 파일을 업로드 후 웹 화면으로 unzip 하였더니 심볼링 링크 파일인 test.txt 파일이 보이네요.
클릭합니다.
해당 심볼링 링크 파일이 참조하고 있는 ../../../index.php 파일의 코드를 볼 수 있습니다!
flag 값이 보이네요.
'Study > Wargame' 카테고리의 다른 글
[root-me] JSON Web Token(JWT) - Public key (0) | 2020.03.05 |
---|---|
[root-me] NoSQL Injection - Authentication (0) | 2020.03.03 |
[root-me] PHP - preg_replace() (0) | 2020.01.08 |
[root-me] LDAP injection - Authentication (0) | 2020.01.08 |
[root-me] Remote File Inclusion (0) | 2020.01.08 |