https://dreamhack.io/wargame/challenges/834
문제
문제에서 요구하는 형식의 문자열을 입력하여 플래그를 획득하세요. 플래그는 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 |