본문 바로가기

4-2. 2024-1 심화 스터디/워게임 도장 깨기

[4주차] 2024.04.05 - Web War Game Write Up

CTF Cite https://play.picoctf.org

1. MatchTheRegex (100points)

정규표현식*을 일치시켜 올바른 입력값을 찾아내는 문제이다.

 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 메타문자와 수량자로 구성

 

웹사이트 접속)

 

문제 풀이)

 

웹사이트 접속 후 입력 창에 admin 입력 시도하였지만 실패하였다.

 

개발자도구(F12)를 사용하여 해당 페이지에 대한 코드를 확인해보았다.

코드 중 주석처리된 ^p……F!?가 정규표현식이라는 예측을 해보았다.

 

🗨️ 다른 코드 분석)

fetch(`/flag?input=${val}`)

fetch 함수를 사용하여 /flag?input=${val} 의 값을 요청한다.

 

const res_json = JSON.parse(res);

JSON.parse 함수 를 통해 res 값을 자바스크립트 객체로 변환한다.

 

alert(res_json.flag)

alert 함수 를 통해 res_json.flag를 메시지창에 띄워준다.

 

^p……F!? - 이 부분을 정규표현식 사이트로 어떤 의미인지 확인해본다.

 

정규표현식 사이트 : https://regexr.com 

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

💡 정규표현식 결과, p로 문자열이 시작된 후에 5글자는 아무 문자나 입력해도 되고, 마지막에 F로 끝나야한다는 의미를 담고 있다.

 

정규표현식 조건을 맞춰서 submit 시켰더니 플래그가 출력되었다.

 


 

2. forbidden paths (200points)

절대 경로 필터링을 우회하여 /flag.txt 파일을 읽어내는 문제다. (웹사이트 파일- /usr/share/nginx/html에 존재)

 

절대 경로 :  절재적인 주소, 변하지 않는 주소를 경로로 지정

                         정적인 문자열을 통해 특정 컴퓨터의 파일 위치를 정확히 알려줌

                         예) /home/usr/ubuntu/workspace/ mypage/env/static/background.jpg

 

상대경로 : 하나의 파일이 있는 위치에서 다른 파일이 위치한 주소를 경로로 지정

                       예) ../static/background.jpg

 

 

웹사이트 접속)

 

 

문제 풀이)

절대주소가 필터링 되어있다고 했으므로 상대주소를 이용해야하는 것이 포인트이다.

 

💡 절대경로 : /usr/share/nginx/html/flag.txt → 상대경로 : ../../../../flag.txt

 

 

flag가 출력되었다.