image-storage 풀이

2021. 11. 17. 15:56Dreamhack Wargame

728x90

문제 제목
문제 정보
메인 페이지
index.php
list.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();
  }
?>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Image Storage</title>
</head>
<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/">Image Storage</a>
        </div>
        <div id="navbar">
          <ul class="nav navbar-nav">
            <li><a href="/">Home</a></li>
            <li><a href="/list.php">List</a></li>
            <li><a href="/upload.php">Upload</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav><br/><br/><br/>
    <div class="container">
      <form enctype='multipart/form-data' method="POST">
        <div class="form-group">
          <label for="InputFile">파일 업로드</label>
          <input type="file" id="InputFile" name="file">
        </div>
        <input type="submit" class="btn btn-default" value="Upload">
      </form>
    </div> 
</body>
</html>

 

맨 마지막 코드는 upload.php인데 사진으로 첨부하기엔 좀 길어서 코드 블록으로 첨부해봤습니다.

upload 페이지에서 웹쉘 취약점이 터지는 형식 인 것 같습니다.

 

upload.php에서 php 코드 부분을 보니 별다른 필터링은 하지 않고 있습니다.

문제에서 FLAG는 /flag.txt에 있다고 했으니까 경로로 이동해서 FLAG를 획득하도록 하는 php 코드를 작성하겠습니다.

 

cat_flag.php 파일 생성
Upload 페이지에 새롭게 만든 php 파일을 업로드
List 페이지
FLAG 획득 완료
문제 풀이 성공

 

728x90

'Dreamhack Wargame' 카테고리의 다른 글

dreamhack-tools-cyberchef 풀이  (0) 2021.11.18
simple-ssti 풀이  (0) 2021.11.17
rev-basic-7 풀이  (0) 2021.11.10
rev-basic-6 풀이  (0) 2021.11.03
rev-basic-5 풀이  (0) 2021.11.03