본문 바로가기
CTF

[2023 Fiesta] 금융 보안 위협분석 대회 특별문제 4-1,4-2 writeup

by jh117jh 2023. 9. 18.
728x90

4-1과 4-2는 연결문제로 4-1에서 찾은 취약점으로 4-2에서 flag.txt파일을 열어 flag값을 확인하면 된다.

사이트에 접속하면 게시판이 나오고 왼쪽 위에 로그인과 회원가입이 있다.

 

일단 로그인 페이지에서 

여러 인증 우회 (' or 1=1-- , ' or 1=1# 등)을 시도했고 필터링되어 있는 것을 확인했다.

그 후 회원가입을 하고 로그인을 해봤는데 

게시판 글 목록이 나오는 걸 볼 수 있다.

각 게시글들은 작성자가 입력한 비밀번호를 입력해야 열람할 수 있도록 되어 있다.

우선 게시판에서 일어날 수 있는 취약점은 XSS, SQL injection, File upload, File download가 대표적인데

script문을 작성했을때 필터링이 있는 걸 확인했고 SQL injection은 쿼리문을 입력할 부분이 딱히 안 보여 뒤로 미뤘다.

 

우선 글 작성 페이지에서 간단한 웹쉘을 올려봤는데

php파일임에도 불구하고 글이 작성되며 다운로드를 누르면 정상적으로 다운로드가 되었다.

 

이로써 File upload 취약점인가 했는데 

다운로드 경로를 확인해본 결과

http://43.201.254.228/download.php?idx=7026&pass=123로 파일명과 경로 말고 idx값과 password로 파일을 구분하여 다운로드하는 방식이었다.

우선 파일을 업로드하고 실행시키려면 파일 경로가 필수적이므로 경로를 알아내기 위해 디렉토리 인덱싱등 여러 방법을 시도해 봤는데 

결국 업로드 경로를 알아내지 못했다.

 

하지만 여기서 알아낸것은 파일 업로드할 때 파일 형식이나 이름의 제한이 허술하다는 것이다.

이러면 File download취약점을 이용해 볼 수 있다.

 

흔히 File download취약점이 파일명이나 경로를 url로 받아 진행되는 경우도 있지만

파일명을 이용할 수도 있다.

 

파일을 업로드할 때 패킷을 탈취해 보면 

파일명과 게시글 제목, 내용, 비밀번호를 확인할 수 있다.

 

여기서 파일명을 ../../../../../flag.txt라고 보내면 어떻게 될까?

만약 필터링이 안되어 올라간다면

쿼리문으로 idx와 pass가 일치한 파일을 불러오다가 ../로 인해 상위디렉터리 어딘가 있는 flag.txt를 다운로드하게 될 것이다.

내가 올린 파일과는 전혀 다른 파일을 다운로드할 수 있는 것이다.

 

그럼 한번 올려보고 다운로드를 해보면 

필터링이 되어 앞에 ../가 없어진 걸 볼 수 있다.

url인코딩으로 우회해 보면 

정상적으로 파일이 업로드, 다운로드가 되는 걸 확인할 수 있다.

그럼 파일의 내용을 확인해 보면

flag값이 담긴 파일임을 확인할 수 있다.

 

이로써 내가 올린 파일과 다른 파일이 다운로드되었으므로 

4-1의 flag값은 fiesta{filedownload}

4-2의 flag값은 fiesta{c941d40a4cff0dc4daa0510a9b7fc970}

728x90