▶CTF란?
Capture The Flag. 주어진 시간 안에 보안 문제를 풀고 깃발(정답)을 찾아 득점하는 해킹대회이다. 보안 설정을 구성하고 시스템의 취약점을 찾아내며 해킹 및 포렌식 등 다양한 보안 주제에 대한 경쟁을 한다.
▶문제
▶문제 속 용어 정리
- 쿠키: 사용자가 어떤 웹사이트를 방문할 때 해당 웹사이트에서 사용자의 브라우저에 저장되는 작은 데이터 파일
※브라우저: 네이버, 구글 등 사이트에 접속할 수 있는 도구
→ 즉, 사이트가 사용하게 되는 일련의 작은 기록 파일이라고 할 수 있다. 해당 웹사이트를 방문할 때마다 인터넷 사용자의 정보를 수집하고 저장합니다.
→ 형태: key-value 형식의 문자열 형태로 저장
※key : value로 표현 ex) "Set-Cookie" : "id=user123"
→ 웹사이트가 인터넷 사용자에 대한 정보를 기억하고, 인터넷 사용자가 웹사이트를 더욱 효율적으로 이용할 수 있도록 한다. 크게 아래 세가지로 쿠키의 역할을 나눌 수 있다.
① 세션관리 : 서버에 저장해야 할 데이터 관리
② 개인 맞춤 데이터 : 테마 등과 같은 세팅값
③ 트래킹 : 사용자의 행동을 기록 및 분석
→ 사용자의 웹사이트 방문 이력을 추적 등 보안에 취약점이 있다.
- admin 계정: 관리자 계정. 일반 사용자에 비해 높은 권한을 가지고 있으며 시스템의 설정을 변경하거나 관리할 수 있는 권한을 가지고 있다.
- DH{...}형식: 괄호 {} 안에 특정한 문자열이 들어가는 형태. 이 문자열은 CTF에서 특정한 챌린지나 문제를 해결한 결과물로, 해당 문제에 대한 정답이다.
ex) DH{this_is_the_flag} → 참가자는 "this_is_the_flag"를 찾아내야한다.
▶풀이
문제 속 웹사이트로 들어가니 로그인 할 수 있는 창이 있다. 이걸 admin 계정으로 로그인하라는 뜻 같다.
문제에서 주어진 파이썬 파일을 열어보았다. 어려운 코드들이 많지만 그 중 flag를 찾을 수 있는 부분에 집중해보았다.
이 부분이 눈에 띈다. user가 guest면 비밀번호 guest를 입력하여 guest로 로그인할 수 있다. 그리고 이 문제의 정답인 admin으로 로그인 하는 것이 flag이다.
user name: guest, password: guest로 로그인을 해보았다. 로그인은 되었지만 admin이 아니라는 문구가 뜬다.
이 사이트의 로그인 상태는 쿠키로 관리하기 때문에 쿠키를 확인해본다.
※쿠키 확인하는 법
① 키보드의 f12 버튼을 눌러 개발자 모드로 실행
② 더보기(<<)를 누른 후 Application 선택
③ cookies 선택
쿠키를 들어가 확인하니 value값이 guest이다. admin 계정으로 로그인 해야하므로 value를 admin으로 바꾸어 준 후 새로고침을 한다.
admin 계정으로 로그인에 성공하였다!
▶코드 해석
flask로 구성된 웹페이지다. 여기서 flask는 파이썬 기반의 웹 프레임워크 중 하나이다. 즉, 파이썬으로도 웹 서버를 만들 수 있다.
루트 페이지(/)에 접속하면 username이라는 쿠키의 값을 가져온다. username이 있는 경우 Hello, username이 출력되고 username이 admin인 경우 FLAG가 출력된다.
→ 사용자가 /login(로그인 페이지)에 접속하면 GET 요청일 때는 로그인 페이지를 보여주고, POST 요청일 때는 사용자가 제출한 아이디와 비밀번호를 확인하여 로그인을 처리한다.
→ 올바른 아이디와 비밀번호를 입력한 경우에는 사용자의 아이디를 쿠키에 저장하고, 사용자를 홈페이지로 리디렉션한다.
→ 만약 아이디가 users 딕셔너리에 없다면 "not found user" 경고창을 띄우고 이전 페이지로 이동한다.
→ 입력한 비밀번호가 올바르지 않으면 "wrong password" 경고창을 띄우고 이전 페이지로 이동한다.
'2024 SWLUG > Dreamhack' 카테고리의 다른 글
3주차_CTF 문제풀이(2) - Flying Chars (0) | 2024.05.22 |
---|---|
3주차_CTF 문제풀이(1) - php7cmp4re (0) | 2024.05.22 |
2주차_ CTF 문제풀이(2) - Carve Party (0) | 2024.05.22 |
2주차_ CTF 문제풀이(1) - devtools-sources (0) | 2024.05.22 |
1주차_CTF 문제풀이(2) - session (0) | 2024.05.22 |