๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Web Hacking/Dreamhack

[Dreamhack] ex-reg-ex ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด

by A Lim Han 2023. 11. 24.

๐Ÿคธ‍โ™€๏ธ 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 ํ™•์ธ๋ž€์— ์ œ์ถœ  -->  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Œ์„ ํ™•์ธ