2021년 사이버공격방어대회(CCE)에 출제되었던
웹해킹 문제
생각보다 간단한 문제들이 많이 나왔었다.
이번 문제 역시도
문제 설명에 나와있는것 처럼
웹 사이트에서 자주 발생하는 기본적인 취약점을 다루고 있다.
플래그는 /flag 위치에 있다고 한다.
문제 소스코드는 별도로 주어지지 않고
문제 페이지 주소만 주어진다.
문제 페이지에 들어가면 이런 화면이 나온다.
CCE 엔터테이먼트에서 CTS 가 데뷔했다고 한다..
F12를 눌러 개발자 도구에서
해당 페이지의 HTML 을 살펴보았다.
페이지 중간쯤에
2021냔 5월 CTS 의 스케줄표를 다운받을 수 있는 링크가 있는데
URI가 download.php?file=<다운받을 파일 경로>
형태로 구성되어 있었다.
쉬운 난이도의 문제라고 했기 때문에
전형적인 LFI 취약점 일것이라 생각했다.
URL에서 ? 뒤에오는 부분은 변수 라고 생각하면 된다.
download.php 페이지에서는 file이라는 변수를 선언하고,
그 변수에 다운받을 파일을 담아 사용자에게 전달하는 것이다.
이런식으로 웹 페이지를 구현할 경우, PHP 환경에서 include() 함수를 사용하는데,
적절한 필터링이 없다면 LFI(Local File Inclusion) 취약점이 발생하게 된다.
LFI는 말 그대로 서버 내에 있는 파일을 불러와 읽을 수 있는 취약점이다.
단순히 웹 페이지의 소스코드 뿐만 아니라 /etc/passwd 와 같인 비밀번호 파일들도 유출이 가능하다.
그래서 URL 에 이렇게
download.php?file=/flag 라고 입력을 하게되면
플래그 파일이 다운로드 된다.
다운받은 flag 파일을 열어보면
플래그가 적혀있는것을 볼 수 있다.
'CTF > 웹해킹' 카테고리의 다른 글
[CODEGATE2022] CAFE - 웹해킹 / XSS (181) | 2023.09.24 |
---|---|
[2021CCE] Search king - 웹해킹 / Python (131) | 2023.08.20 |
[2021CCE] baby first - 웹해킹 / SQL Injection (103) | 2023.08.09 |
[TMUCTF] Injection - 웹해킹 / SSTI (80) | 2023.07.09 |
[TMUCTF] Login - 웹해킹 / PHP (67) | 2023.07.07 |