Web Study/Training

[Dreamhack] image-storage 문제 풀이

2024. 1. 1. 23:01

QUOTE THE DAY

Self-Talk
반응형

※ 본 내용은 공부 목적으로 작성된 내용입니다 ※ 잘못된 부분이 있으면 언제든지 댓글로 알려주세요!

 

 

 

서버 생성 / 문제 파일 받기

 

0123

 

페이지를 살펴보면 Upload 항목에 파일을 업로드할 수 있습니다 여기에 드림핵 이미지를 업로드하면 이미지가 업로드된 위치를 반환합니다 이 위치에 방문하면 우리가 업로드한 드림핵 이미지를 확인할 수 있습니다

 

앞서 배운 파일 업로드 취약점을 이용하여 WebShell을 업로드해 flag 값을 찾아봅시다

 

<?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>

 

WebShell을 업로드하기 전에 소스코드를 살펴봅시다 문제 파일을 다운받으시면 index.php, list.php, upload.php 소스 파일이 들어있는 걸 알 수 있는데 WebShell 실행 전제 조건 중 서버 사이드 언어에 맞게 작성해야 합니다

 

upload.php 코드 내부를 살펴봤을 때 WebShell을 필터링하는 과정이 없어 php로 작성된 WebShell을 업로드해 봅시다

 

 

전 간단하게 system 함수를 이용해서 GET 요청에서 musa 매개변수에 명령어를 입력할 수 있는 test.php라는 WebShell을 만들었습니다

즉 이 파일이 업로드된 경로 URL 파라미터에 musa 매개변수를 사용하여 시스템 명령어를 작동시킬 수 있습니다

 

01

 

제작한 WebShell을 업로드하고 파일이 업로드된 경로로 방문하면 빈 페이지가 보이게 됩니다 왜 빈 페이지냐면 앞서 제작한 WebShell은 musa라는 매개변수를 이용해서 시스템 명령어를 작동시킬 수 있습니다 하지만 현재 아무런 매개변수를 설정하지 않았기 때문에 빈 페이지로 보이는 겁니다

 

 

즉 ? 쿼리 스트링 뒤에 musa 매개변수에 리눅스 시스템 명령어 ls를 입력하게 되면 현재 경로에 있는 파일들을 보여줍니다

정상적으로 test.php 파일이 업로드되어 작동되고 있는 걸 알 수 있습니다

 

 

flag 값은 문제에서 /flag.txt에 있다고 했으니 cat 명령어를 이용해서 flag 값을 읽어올 수 있습니다

단순하게 WebShell에서 System("cat /flag.txt");로 작성해도 위에 결과와 동일하게 작동됩니다

 

 

[ 선수 학습 내용 ]

더보기
 

파일 업로드 취약점(File Upload Vulnerability)

Web Directory 웹 디렉터리는 웹 사이트의 온라인 카테고리입니다 웹 검색 엔진과 다른 역할을 가지는데 웹 검색 엔진은 사용자가 특정 키워드로 정보를 검색할 때 관련된 웹 페이지를 찾는 반면 웹

mu-sa.tistory.com

 

HTTP 헤더 구조와 GET과 POST 메소드 방식

이번에는 HTTP 헤더 구조에 대해 살펴보겠습니다 HTTP 헤더 구조 HTTP는 브라우저와 서버가 통신할 수 있도록 하는 프로토콜입니다 이때 HTTP는 서버에 요청(Request) 할 때 요청 행과, 요청 헤더, 메시

mu-sa.tistory.com

 

 

'Kali Linux/Linux' 카테고리의 글 목록

死死死死死死

mu-sa.tistory.com

 

반응형
저작자표시 (새창열림)
'Web Study/Training' 카테고리의 다른 글
  • [Dreamhack] command-injection-1 문제 풀이
  • [Dreamhack] Apache htaccess 문제 풀이
  • [Dreamhack] file-download-1 문제 풀이
  • [Dreamhack] simple_sqli_chatgpt 문제 풀이
MUSA
MUSA
Nine Point Eight

최근 댓글

최근 글

인기 글

  • MUSA
    무사
    Nine Point Eight
    • 홈

    • 방명록

    • 분류 전체보기 (124)
      • Minecraft (29)
        • Server Development (16)
        • ResourcePack (7)
        • Plugin (5)
        • Java Plugin (1)
      • Tistory (15)
        • 티스토리 수익 (3)
        • 티스토리 검색 유입 (3)
        • 티스토리 꾸미기 (9)
      • Windows (2)
      • Kali Linux (42)
        • Linux (24)
        • Bandit (18)
        • Tool (0)
      • Web Study (26)
        • Theory (14)
        • Training (12)
      • CTF (5)
        • HackTheon (1)
        • Customized CTF (2)
        • CTF Write-Up (2)
      • Forensics (1)
      • System (1)
      • Cryptography (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
MUSA
[Dreamhack] image-storage 문제 풀이
상단으로

티스토리툴바