카테고리 없음

워게임 Image-Storage

미숫가루빙수 2023. 5. 14. 21:55

풀기 전에 문제를 간단하게 읽어본다.

 

php로 작성된 파일을의 취약점을

이용해 플래그를 얻는 문제이다.

 

<?php
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES)) {
      $directory = './uploads/';
      $file = $_FILES["file"];
      $error = $file["error"];
      $name = $file["name"];
      $tmp_name = $file["tmp_name"];
     
      if ( $error > 0 ) {
        echo "Error: " . $error . "<br>";
      }else {
        if (file_exists($directory . $name)) {
          echo $name . " already exists. ";
        }else {
          if(move_uploaded_file($tmp_name, $directory . $name)){
            echo "Stored in: " . $directory . $name;
          }
        }
      }
    }else {
        echo "Error !";
    }
    die();
  }
?>

문제를 푸는데 필요한 코드

 

사이트에 접속하게 되면

다음과 같이 뜬다.

 

코드 16~17번째 줄을 보게 되면

파일 업로드 시 Stored in 문자와 함께

directory와 name을 볼 수 있게 된다.

 

 

메모장에 다음과 같이 작성해

php로 저장한다.

 

(php 태그 정의: <?php 내용?>

system() 함수: 주어진 시스템 명령어를 실행하고 결과 출력)

 

 

업로드 창에서 방금 작성한 파일을 업로드 시킨다.

 

 

Stored in과 함께 업로드한 파일 명이 뜬다.

 

 

list창으로 들어가면

업로드한 파일을 볼 수 있고

이걸 클릭할 경우 그에 대한 내용을 볼 수 있다.

 

정답: DH{c29f44ea17b29d8b76001f32e8997bab}