본문 바로가기

DreamHack

[DreamHack] ex-reg-ex

https://dreamhack.io/wargame/challenges/834

 

ex-reg-ex

Description 문제에서 요구하는 형식의 문자열을 입력하여 플래그를 획득하세요. 플래그는 flag.txt 파일과 FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다.

dreamhack.io

난이도: 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+

 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

\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