카테고리 없음

워게임 ex-reg-ex

미숫가루빙수 2023. 8. 30. 23:46

flag.txt파일에서 플래그를 얻는 문제이다.

 

 

사이트를 접속하게 되면 다음과 같이 입력창이 뜬다.

입력창에 알맞은 이메일을 작성하면 플래그를 얻을 수 있다.

 

 

#!/usr/bin/python3
from flask import Flask, request, render_template
import re

app = Flask(__name__)

try:
    FLAG = open("./flag.txt", "r").read()       # flag is here!
except:
    FLAG = "[**FLAG**]"

@app.route("/", methods = ["GET", "POST"])
def index():
    input_val = ""
    if request.method == "POST":
        input_val = request.form.get("input_val", "")
        m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)
        if m:
            return render_template("index.html", pre_txt=input_val, flag=FLAG)
    return render_template("index.html", pre_txt=input_val, flag='?')

app.run(host="0.0.0.0", port=8000)

문제에 필요한 코드

 

 

다음 코드를 살펴보면 정규식인

dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+를 볼 수 있다.

 

정규식에 맞추어 알맞게 이메일을 작성해야 한다.

 

정규식 테스트 사이트에 들어가 

자신이 만든 이메일이 조건에 부합한지 확인한다.

 

 

dr : 문자 그대로 dr

\w{5,7} : 5~7개의 문자 + 숫자 (alphanumeric) 와 매치

e : 문자 그대로 e

\d+ : 숫자와 매치, 최소 한 번 이상

am@ : 문자 그대로 am@

[a-z]{3,7} : 3~7개의 문자와 매치

\. : 문자

\w : 1개 이상의 문자 + 숫자

 

 

다음 조건에 맞게 이메일을 만들었다면 

만든 이메일을 입력창에 넣는다.

 

 

플래그를 얻을 수 있다.

 

 Flag: DH{e64a267ab73ae3cea7ff1255b5f08f3e5761defbfa6b99f71cbda74b7a717db3}