무언가를 입력하면 (예를 들어 flag)
Input에 입력값이 들어가고Flag는 여전히 ?이다. 코드는 다음과 같다.
#!/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)
만약 m이면 flag가 플래그가 된다는 건데 m이
m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)
이거고 저 안에 있는 것이 매치되고 그 값을 submit하면 flag를 준다는 문제인듯. 자바를 잘 몰라서 이 글을 참고하여 풀었다.
https://zzang9ha.tistory.com/322
[Java] - 자바 정규 표현식(Regular Expression) + 2021 카카오 코테(신규 아이디 추천)
안녕하세요~ 이전에 운영하던 블로그 및 GitHub, 공부 내용을 정리하는 Study-GitHub 가 있습니다! • 네이버 블로그 • GitHub • Study-GitHub • 🐔 ✔ 정규 표현식(Regular Expression) 안녕하세요, 이번에 정
zzang9ha.tistory.com
우선
- dr은 그냥 dr이고
- \w은 한 개의 알파벳 또는 한 개의 숫자이고, {n, m}은 n개에서부터 m개까지이니 => 5개부터 7개까지의 알파벳 또는 숫자
- e
- \d는 한 개의 숫자인데 뒤에 +가 있으니 한 개의 숫자 이상이라는 뜻
- am@
- []은 한 개의 문자이니 a-z까지 하나의 문자인데, 뒤에 [3, 7]이 있으니 3개부터 7개까지의 a부터 z까지의 알파벳
- \.은 .
- \w+은 한 개의 알파벳 또는 한 개의 숫자 이상
저 표현식에 맞는 아무 숫자나 넣어 조합하고
draaaaae1am@aaa.a
입력값에 넣어 주었더니 flag가 나왔다~!
'워게임 스터디' 카테고리의 다른 글
[250218] SuNiNaTaS - 18번 (0) | 2025.02.18 |
---|---|
[250211] dreamhack - baby-linux (0) | 2025.02.11 |
[250211] dreamhack - file-download-1 (0) | 2025.02.11 |
[250204][webhacking] old-14 (0) | 2025.02.04 |
[250128][webhacking] old11 (0) | 2025.01.29 |