[Dreamhack Web - Lv 1] image-storage

문제 정보

php로 작성된 파일 저장 서비스입니다.

파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다.

풀이 힌트

1. 공격 백터 파악

2. php upload 취약점

문제 풀이

더보기

문제 페이지에 들어가보니, 기능이 List, Upload 밖에 없었다.
공격 백터 파악을 위해 한번 살펴보겠다.

 

List 페이지에 들어갔는데, 아무 것도 없는 페이지가 나왔다.
예상하기엔 Upload를 하면 List에서 확인이 가능하는 것으로 보인다.

 

Upload 페이지에 들어가보니, 이름대로 Upload 기능이 있는 페이지가 나왔다.
일단 한번 드림핵 로고 이미지 파일을 업로드 해봤다.

 

업로드 후에는 서버에 저장되는 경로를 출력된다는 것을 알 수 있었다.

 

프록시로 어떤 이름으로 이미지가 서버에 전달이 되는지 확인봤다.
file이라는 파라미터로 전달이 되고 있었다.

 

List 페이지에 확인을 해보니, 예상대로 업로드한 파일이 저장된 경로로 링크된 a 태그가 생성되었다.

 


여기까지 살펴본 나는 어떤 취약점이 있을까? 생각을 했는데, 해당 페이지가 PHP로 만들었다는 것을 보고 공략할 방법을 생각하게 되었다.
생각한 방법은 php은 ~~~.png로 되어 있어도 파일 내부에 <?php ?>으로 되어있으면 php로 해석이 된다는 것이다.
아니면, 업로드 시 확장자 검사를 안하면 바로 웹쉘 php 파일을 업로드하는 방법이다.

 

일단 나는 확장자 검사를 하는지 확인하지 위해 웹쉘 php 파일을 업로드하였다.

 

웹쉘 php 파일이 업로드가 성공한 것을 보니, 업로드 시 확장자 검사를 하지 않는 것을 알 수 있었다.

 

system 함수도 잘 작동하였다.

 

나는 cat 명령어를 이용하여 /flag.txt 파일을 확인하여 flag를 얻었다.