2024 SWLUG/Dreamhack

5주차_CTF 문제풀이(2) - simple-web-request

un_plugged 2024. 5. 22. 12:22

▶문제

문제가 길다. Step 1 -> Step 2 -> FLAG 순으로 문제를 푸는 것 같고...

플래그가 있는 파일과 변수를 알려주고 있다.

▶문제 속 용어 정리

웹 프레임워크

웹 개발 프로세스의 일부 측면을 자동화하여 더 쉽고 빠르게 만들 수 있는 소프트웨어 도구이다.

파이썬 플라스크(Python Flask)

웹 애플리케이션 개발을 위한 파이썬 프레임워크이다.

마이크로 프레임워크로 최소한의 구성 요소와 요구 사항을 제공하기 때문에 시작하기 쉽고 필요에 따라 유연하게 사용할 수 있다.

▶풀이

문제 서버에 접속하였다. 일단 STEP 1부터 풀어야하기에 STEP 1로 들어가준다.

param, param2의 값을 입력하면 STEP 2로 넘어갈 것 같다. 여기서 개발자도구를 열어야하나...문제 파일을 봐야하나...고민하다가 뭔가 입력창이 코드처럼 적혀있어서 문제 파일을 열어보았다.

위의 사진처럼 param, param2 값이 그대로 나와있었다!

if 문으로 작성된 코드를 해석해보녀 prm1 값(param 값을 말함)은 "getget"이고, prm2 값이 "rerequest"이면 step2로 리디렉션한다.

각각 입력해주면

STEP 2로 넘어왔다!(처음에 안넘어온줄 알았다...)

자 이제 또 param, param2 값을 찾아야하니까 코드를 아래로 쭉쭉 내려보았다.

STEP 1처럼 값이 바로 나와있었다.

if문으로 작성되어 있는 형태는 동일하고 render_template이 뭔지 몰라서 검색해봤다.

※Flask의 render_template

기본적으로 프로젝트 폴더 내의 'templates'라는 이름의 폴더를 기본 경로로 설정한다.

이거인듯!

그리고 그 내부에 html 파일들을 모아두어 손쉽게 사용한다.

그러면 이제 STEP 2의 답을 입력해보겠다.

차례대로 입력하면

FLAG 값이 나온다!

문제 풀이에 성공하였다.

지금까지 풀어본 CTF 문제 중에 가장 쉬웠던 것 같다!