https://dreamhack.io/wargame/challenges/834
난이도: Level 1
app.py
#!/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)
문제 코드를 보면, 정규표현식과 일치하게 되면 FLAG를 반환한다는 것을 알 수 있습니다.
Regular Expression
dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+
\w{5,7} => any words (단어 개수 5~7개)
\d+ => 숫자 한 개 이상
[a-z] => 소문자 a ~ z 까지
\. => .
\w => any words
정답: drhelloe1am@abc.d
이와 같이, 정규표현식에 매칭되는 문자열을 만들어주면 FLAG를 획득할 수 있습니다.
'DreamHack' 카테고리의 다른 글
[DreamHack] Apache htaccess (0) | 2023.08.08 |
---|---|
[DreamHack] CSRF Advanced (0) | 2023.08.08 |
[DreamHack] Flying Chars (0) | 2023.08.08 |
[DreamHack] phpreg (0) | 2023.08.08 |
[DreamHack] cg-simple_sqli (0) | 2023.08.08 |