level 8 같은 경우는 GIF 파일만 올릴 수 있으며 우회를 하여 flag값을 얻는 문제인거 같다.

 

소스보기를 통해 살펴보니 업로드 파일 크기, 파일 확장자 체크를 하는듯 보인다.

 

이를 통해서 flag 값을 얻을려면 아마 웹쉘같은 파일을 업로드 시켜보면 flag 값에 대한 힌트를 받을 수 있지 않을까 라는 생각으로 접근을 하였다.

그러나, 웹쉘 파일을 통해서 시스템 명령어를 넣어서 업로드 시켜보았지만 먹히지 않았다..

 

그러던 중 소스코드에서 php를 사용하는 것을 보고 php 명령어를 찾아보는 중에 scandir함수를 발견했다.

scandir() 함수는 지정된 디렉토리의 파일 및 디렉토리의 배열을 반환하는 함수이다.

이를 바탕으로 문제를 풀어보자!

 

 

문제를 푸는데 사용하는 명령어는 아래와 같다.

<?php
	print_r(scandir('./'));
?>

짜란! 2번에 보면 flag.txt파일이 있는 것을 확인 할 수 있었다. 그럼 아까 소스에 덧붙혀서 flag 파일 안의 내용을 확인해보자.

 

flag 값은 WEBSEC{BypassingImageChecksToRCE}으로 확인할 수 있었다.

 

+++

추가로 PHP 5버전 미만은 readdir 함수를 통해서 확인해 볼 수 있다고 한다!


참고

http://www.w3big.com/ko/php/func-directory-scandir.html

 

PHP를 위해 scandir () 함수

PHP를 위해 scandir () 함수 PHP 디렉토리 참조 예 이미지는 파일 및 디렉토리의 디렉토리에 나열되어 있습니다 :

www.w3big.com

 

'워게임 > Websec.fr' 카테고리의 다른 글

[websec.fr] easy - Level 11  (0) 2021.08.22
[websec.fr] babysteps - Level 04  (0) 2021.07.18
[websec.fr] easy - Level 02  (0) 2021.07.11
[websec.fr] babysteps - Level 25  (0) 2021.07.07
[websec.fr] babysteps - Level 17  (0) 2021.07.04
복사했습니다!