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}