[Web] Tenable CTF Write-up : Spring MVC 1–8

Ate1es
Pri_mates
Published in
4 min readFeb 25, 2021

ctf문제 파일만 남아있는 관계로 로컬서버에 실행시켜서 write up을 작성하겠다.

Spring mvc 환경으로 작성된 코드가 주어진다.

1번, /main 으로 Mapping 되어있고, get request로 받겠다고 되어있다.

그냥 /main 으로 접속하면 끝.

2번, 같은 url에서 GET request가 아닌 POST request로 접속하면 뜬다.

버프로 하기 귀찮아서(?) 그냥 파이썬 requests 이용해서 flag를 응답받았다.

3번은 post 요청에 parameter 를 더해서 보내는 문제이다. 조건문 상 magicWord=please 면 flag3을 보여준다는 것 같다.

request에 요구되는 파라미터에 맞게 입력을 하여 같이 요청하였다.

위의 4번 코드를 보면, consumes라는 조건이 걸려있다. 이말은 spring에서 요청 페이로드 타입을 applicaion/json으로 제한한다는 말이다.

따라서 헤더에 content-type을 applicaion/json으로 변조해 요청해야한다.

4번 페이로드
4번 실행결과
5번 문제코드=버프 써야되서 귀찮아서 생략
6번 문제코드

6번, 조건 그대로 헤더에 Magic-Word:please 넣어주면된다.

7번부터 숨겨진 파일에 있는 내용을 보아야한다.

주어진 앱 내 .으로 숨겨진 파일

숨겨진 파일의 코드를 보면, 파라미터 중 name 의 값이 please 인지 검사한다

코드 그대로 request를 보내준다.

숨겨진 필드에 플래그가 떴다.

8번 플래그의 조건

8번 플래그의 조건은 realName이라는 세션값을 admin으로 만들어야한다.

문제의 주어진 파일 중 하나인 OtherControll을 보자

이곳에서 name이라는 이름으로 realName 을 설정 할 수 있다.

따라엇 우리가 해야 할 일은 URL/other?name=admin 으로 세션에 realName=admin이라는 것을 등록해준 후

URL/ 로 접속하면 된다.

8번 플래그 등장.

대회가 끝난 후 문제파일로만 writeup을 쓰려다보니 플래그가 실제 플래그와 다르게 예시 플래그로 나온다.

--

--