118명 중에 42명이 위 문제를 풀었다.
주어진 주소르 이동하면 그림과 같은 페이지가 출력된다. 5shared란 4shared에서 따온 명칭인 것 같다. 4shared는 사람들이 음악이나 문서 파일 등을 공유하는 서버이다. 이와같이 5shared 서버도 파일을 업로드하고 업로드한 파일을 읽을 수 있는 기능이 있다.
5shared에는 파일 업로드 취약점이 존재한다. 임의의 파일 test.txt 파일을 업로드하면 첫 번째 그림처럼 jpg, gif, png 확장자만 업로드 할 수 있다고 출력되지만 test.jpg.txt 와 같이 파일 이름을 수정하여 업로드하면 필터를 우회할 수 있다. 하지만 업로드 해야할 파일은 txt파일이 아닌 php 웹쉘이다. php 웹쉘은 칼리리눅스에 /usr/share/webshell 디렉토리에 있는 simple-backdoor.php 파일을 사용하겠다. 해당 파일을 simple-backdoor.jpg.php로 수정하여 업로드하면 두 번째 그림처럼 파일 이름에 php가 들어가면 안된다는 문구가 출력된다. 따라서 두 번째 필터링을 우회하기 위해서 php를 또 다른 확장자 phtml로 바꿔준다. php 확장자에는 여러가지 버전이 있다. 예를 들어 php3, php5. phtml 등이 있다. simple-backdoor.jpg.php 파일을 simple-backdoor.jpg.phtml로 수정한다. 그리고 업로드하면 세 번째 그림처럼 모든 필터링을 우회하여 파일을 업로드할 수 있다.
마지막으로 이전에 업로드한 simple-backdoor.jpg.phtml 파일에 접속하여 url 주소 뒤에 아래와 같이 입력하면 현재 디렉터리의 파일 리스트를 열람할 수 있다.
simple-backdoor.jpg.phtml?cmd=ls
상위 디렉토리도 이동이 가능하므로 이곳저곳 찾아보면 flag 값을 찾을 수 있다. 아래 코드를 이용해 플래그 값을 획득할 수 있다.
simple-backdoor.jpg.phtml?cmd=cat ./../../flag*;
플래그: DIMI{expl0d3_pht_g3t_sh3lL_:p}
'웹 해킹 > CTF' 카테고리의 다른 글
[Square CTF] Password checker (0) | 2021.08.11 |
---|---|
[WebGoat] General - HTTP Proxies (0) | 2021.05.15 |
[WebGoat] General - HTTP Basics (0) | 2021.05.15 |
[DIMI CTF] exec me (0) | 2021.03.25 |
[DIMI CTF] simple sqli (0) | 2021.03.23 |
댓글