๐คธโ๏ธ ex-reg-ex ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด
1. ๋ฌธ์ ์ค๋ช ํ์ธ ํ ์๋ฒ ์์ฑ
2. ์์ฑํ ์๋ฒ๋ก ์ ์ํ ๋ค ์์์ ๊ฐ ์ ๋ ฅ --> Input ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋จ์ ํ์ธ
3. ๋ฌธ์ ํ์ผ ๋ค์ด๋ก๋ ํ 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)
4. ์ ๊ทํํ์์ ํตํด ์ด๋ฉ์ผ ์ฃผ์์ ํจํด์ ๊ฒ์ฌํ๋ ๋ถ๋ถ ๋ฐ๊ฒฌ
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)
++ ์กฐ๊ฑด ์ค๋ช ์์ธ
์กฐ๊ฑด | ์ค๋ช |
dr | ๋ฌธ์์ด์ด "dr"์ผ๋ก ์์ํด์ผ |
\w{5,7} | 5~7๊ฐ์ ์๋(์ํ๋ฒณ ๋ฌธ์ & ์ซ์)๊ฐ ์ฐ์์ผ๋ก ๋์์ผ ํจ |
e\d+ | ๋ฌธ์ "e" ๋ค์์ ํ๋ ์ด์์ ์ซ์๊ฐ ๋์์ผ ํจ |
am@ | ๋ฌธ์์ด์ด "am@"์ผ๋ก ๋๋์ผ |
[a-z]{3,7} | 3์์ 7๊ฐ์ ์๋ฌธ์ ์ํ๋ฒณ์ด ์ฐ์์ผ๋ก ๋์์ผ ํจ |
\.\w+ | ๋ง์ง๋ง์ผ๋ก ์ (".") ๋ค์์ ํ๋ ์ด์์ ์ํ๋ฒณ ๋ฌธ์๋ ์ซ์๊ฐ ๋์์ผ |
5. ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง๋ ์ ๋ ฅ๊ฐ ์์ฑ
# ๋ต๋ณ ์์
: draaaaae1am@mail.com
6. ์์ฑํ ๊ฐ์ ์ ๋ ฅ๋์ ์ ๋ ฅ --> FLAG ๋ฐ๊ฒฌ
7. ๋ฐ๊ฒฌํ FLAG๋ฅผ FLAG ํ์ธ๋์ ์ ์ถ --> ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์์ ํ์ธ
'โ๏ธ Web Hacking > Dreamhack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dreamhack] Simple-web-request ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด (0) | 2023.08.17 |
---|---|
[Dreamhack] Web-Deserialize-Python ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด (0) | 2023.08.15 |
[Dreamhack] Command-Injection-ChatGPT ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด (0) | 2023.08.15 |
[Dreamhack] Flying Chars ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด (0) | 2023.08.13 |
[Dreamhack] Session ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด (0) | 2023.08.12 |