Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UpstageAILab
- 패스트캠퍼스AI부트캠프
- 국비지원
- UpstageAILab#국비지원
- 패스트캠퍼스업스테이지부트캠프
- 티스토리챌린지
- 패스트캠퍼스
- 업스테이지패스트캠퍼스
- 패스트캠퍼스업스테이지에이아이랩
- 오블완
Archives
- Today
- Total
김민주
ex-reg-ex 본문
문제는 다음과 같다.
#!/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) |
문제에서 주어진 소스 코드이다.
그리고 사이트에 들어가보니 input_var 값을 넣을 박스와 제출 버튼이 있다.
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) |
위 소스코드에서 중요한 부분은 이 부분인 것 같다.
m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)
이를 해석해보면
1. dr: dr문자열을 의미한다.
2. \w{5,7}: 5개에서 7개의 문자를 의미한다.
3. e: 'e' 문자를 의미한다.
4. \d+: 하나 이상의 숫자를 의미한다.
5. am@: "am@" 문자열을 의미한다.
6. [a-z]{3,7}: 3개에서 7개 사이의 소문자 알파벳 문자를 의미한다.
7. \.: 마침표 문자를 의미한다.
8. \w+: 하나 이상의 문자를 의미한다.
따라서 해당 조건대로 문자열을 만들면 draaaaae1am@mail.com 이고, 이를 사이트에 입력해보면
flag 값이 뜬다.
문제 풀이 성공
'SWUFORCE > [공통] 드림핵 스터디' 카테고리의 다른 글
Flying Chars (0) | 2023.11.28 |
---|---|
[web] web-misconf-1 (0) | 2023.11.21 |
[web] session (0) | 2023.11.21 |
[pwnable] ssp_001 (0) | 2023.11.13 |
[pwnable] ssp_000 (1) | 2023.11.13 |