한동안 휴식기를 가지고 왔는데...

1월도 됐으니 열심히 다시 달려보도록 하겠습니다~

바로 문제풀이 시작하겠습니다.

 

1. 문제

 

문제 접근 시 여러 가지 카테고리가 보이며

주제는 파일업로드-이중 확장자로 보이네요.

 

2. 문제풀이

 

문제 풀기 전 어떠한 업로드의 문제인지 확인하기 위해 힌트를 보았습니다.

PHP 코드를 통해 최상위 .password 파일 안에 패스워드를 가져오라는 것 같습니다.

 

여러 가지 카테고리가 있지만 주제에 맞게 바로 Upload 부분으로 들어와 업로드를 시도해 보겠습니다.

 

업로드 전 최상위 경로의 .passwd 파일을 찾기 위해 php 웹쉘을 작성해보겠습니다.

 

기본적으로 명령어를 사용할 수 있는 코드를 작성하였습니다.

간단하게 메모장을 통해 작성 후 확장자를 .php 로 붙여 저장해 주었습니다.

요새는 Windows에서 악성코드로 의심되면 사용을 제한하게 되더라구요 설정을 통해 자신이 선택한 파일은 허용이 되는 것 같습니다.

 

이후 파일 업로드를 시도해 보았습니다.

 

 

파일 선택을 통해 업로드할 파일을 선택하고 업로드 버튼을 통해 업로드를 하는 구조였습니다.

 

업로드 시도 시 요청 패킷과 응답이 어떻게 나오는지 확인해보겠습니다.

php 파일로 업로드를 시도해 봤는데 잘못된 파일 확장자라며 업로드할 수가 없네요

 

 

이후 업로드 가능한 형태인 .gif, .jpeg, .png 형태로 변형하여 시도를 해보겠습니다.

 

php 파일 뒤에 확장자 .png를 붙여 주었습니다.

 

파일 업로드가 가능했으며, 저장된 경로까지 노출되었습니다.

 

해당 경로로 접근해보겠습니다.

 

업로드된 파일에 접근이 가능했으며, 업로드 된 웹쉘을 통해 파일들의 경로를 확인해 보겠습니다.

 

cmd=ls -al을 통해 현재 파일목록을 보았습니다. 업로드 한 test파일만 존재하여 경로를 하나씩 올라가 passwd 파일을 찾아야겠습니다.

 

한 단계 위의 경로에도 아직 파일이 보이지 않아 더 올라가 보겠습니다.

명령어는 cmd=ls -al ../ 입니다.

 

이번에도 페이지 접근 시 나온 카테고리만 보이네요

 

드디어 3번째 만에 패스워드 파일이 존재하는지 확인할 수 있었습니다.

 

패스워드 파일을 찾았으니 패스워드가 무엇인지 파일을 출력해보겠습니다.

 

cat을 통해 패스워드 파일의 내용을 출력해 보았습니다.

 

해당 패스워드를 검증해보니..

 

파랑새가 나왔습니다~

 

사실 파일이 php형태로 안 올라가게 되어서 이게 동작이 잘 될지 몰랐는데, 이런 경우도 있다는 것을 새롭게 알게 되었고, 파일 업로드 과정 또한 많은 난관이 있었습니다~

힌트를 앞으로 잘 활용해봐야겠습니다.

오늘 문제풀이 끄읏~

 

복사했습니다!