
소스코드
#!/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)```
m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}.\w+', input_val)
문제 파일의 중요한 코드이다.
아래 조건을 만족시킨다.
dr: dr문자열을 의미한다.
\w{5,7}: 5개에서 7개의 문자를 의미한다.
e: 'e' 문자를 의미한다.
\d+: 하나 이상의 숫자를 의미한다.
am@: "am@" 문자열을 의미한다.
[a-z]{3,7}: 3개에서 7개 사이의 소문자 알파벳 문자를 의미한다.
.: 마침표 문자를 의미한다.
\w+: 하나 이상의 문자를 의미한다.
위 조건대로 문자열을 만들면
draaaaae1am@aaa.a

Flag: DH{e64a267ab73ae3cea7ff1255b5f08f3e5761defbfa6b99f71cbda74b7a717db3}
오 pwn 쪽으로 공부하시나 보네요.