Dreamhack

[Dreamhack] ex-req-ex Write-Up

jeff_kim 2024. 3. 15. 03:02

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

 

ex-reg-ex

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

dreamhack.io

 

문제

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

플래그 형식은 DH{...} 입니다.


 

 



풀이

1. 정규표현식 문제이다 문제를 다운 받으면 python 코드를 보여주고 웹해킹 문제 사이트에 들어가서 문제를 풀면된다

지급된 웹해킹 링크

#!/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)

이러한 코드를 지급해준다.

 

2. 집중해서 봐야할 부분은 `dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+` 이부분이다

@가 있는걸 봐서는 이메일을 만드는 정규표현식 인것같다 해석을 해보자면

 

  •  처음 시작은 dr 로 시작을 해야한다
  • \w{5,7} => 5~7개의 알파벳 또는 숫자가 온다
  • 다음은 e
  • \d+ =>하나 이상의 숫자가 온다
  • 다음은 am@
  • [a-z]{3,7} => 소문자 알파벳 3~7개
  • 다음은 \. => 무조건 .
  • \w+ => 하나 이상의 알파벳 또는 숫자가 온다

 

정규표현식 문제이기 때문에 정해져있는 틀에서 벗어나지 않는다면 다 정답이 될것이다.

 

나는 drabcdee145am@abcedf.12345 를 했는데 flag를 받았다

래도 이메일 형식을 하면 좋으니

 

drjeffkime0315@tistory.com 으로 해보았다 역시 flag는 준다

'Dreamhack' 카테고리의 다른 글

[Dreamhack] cookie Write-Up  (1) 2024.03.16
[Dreamhack] phpreq Write-Up  (2) 2024.03.15
[Dreamhack] blue-whale Write-Up  (3) 2024.03.15
[Dreamhack] baby-linux Write-Up  (1) 2024.03.14
[Dreamhack] 64se64 Wirte-Up  (0) 2024.03.14