λ¬Έμ μ€λͺ
μΉ μλ²μ μ μνλ μμ κ°μ΄ μ΄ μΈ κ°μ§μ μ¬μ΄νΈμ μ μν μ μκ²λ νμκ° λλ€.
λ¬Έμ μ€λͺ μ λμ μλ―μ΄ STEP 1κ³Ό STEP 2μ κ±°μ³μΌ Flagλ₯Ό νλν μ μλ€.
μμ§ STEP 1μ μννμ§ λͺ»νκΈ° λλ¬Έμ STEP 2 νμ΄μ§λ μ μμ‘°μ°¨ λμ§ μλλ€.
νμ΄μ¬ μ½λλ₯Ό μ΄μ΄μ μ΄ν΄ 보면 μλμ κ°λ€.
#!/usr/bin/python3
import os
from flask import Flask, request, render_template, redirect, url_for
import sys
app = Flask(__name__)
try:
# flag is here!
FLAG = open("./flag.txt", "r").read()
except:
FLAG = "[**FLAG**]"
@app.route("/")
def index():
return render_template("index.html")
@app.route("/step1", methods=["GET", "POST"])
def step1():
#### νμ΄μ κ΄κ³μλ μΉν
λ°©μ§ μ½λ
global step1_num
step1_num = int.from_bytes(os.urandom(16), sys.byteorder)
####
if request.method == "GET":
prm1 = request.args.get("param", "")
prm2 = request.args.get("param2", "")
step1_text = "param : " + prm1 + "\nparam2 : " + prm2 + "\n"
if prm1 == "getget" and prm2 == "rerequest":
return redirect(url_for("step2", prev_step_num = step1_num))
return render_template("step1.html", text = step1_text)
else:
return render_template("step1.html", text = "Not POST")
@app.route("/step2", methods=["GET", "POST"])
def step2():
if request.method == "GET":
#### νμ΄μ κ΄κ³μλ μΉν
λ°©μ§ μ½λ
if request.args.get("prev_step_num"):
try:
prev_step_num = request.args.get("prev_step_num")
if prev_step_num == str(step1_num):
global step2_num
step2_num = int.from_bytes(os.urandom(16), sys.byteorder)
return render_template("step2.html", prev_step_num = step1_num, hidden_num = step2_num)
except:
return render_template("step2.html", text="Not yet")
return render_template("step2.html", text="Not yet")
####
else:
return render_template("step2.html", text="Not POST")
@app.route("/flag", methods=["GET", "POST"])
def flag():
if request.method == "GET":
return render_template("flag.html", flag_txt="Not yet")
else:
#### νμ΄μ κ΄κ³μλ μΉν
λ°©μ§ μ½λ
prev_step_num = request.form.get("check", "")
try:
if prev_step_num == str(step2_num):
####
prm1 = request.form.get("param", "")
prm2 = request.form.get("param2", "")
if prm1 == "pooost" and prm2 == "requeeest":
return render_template("flag.html", flag_txt=FLAG)
else:
return redirect(url_for("step2", prev_step_num = str(step1_num)))
return render_template("flag.html", flag_txt="Not yet")
except:
return render_template("flag.html", flag_txt="Not yet")
app.run(host="0.0.0.0", port=8000)
μ½λ λ΄μ©μ μ½λ€ 보λ paramκ³Ό param2λ₯Ό μ§μ μ μΌλ‘ μλ €μ£Όλ λΆλΆμ΄ μλ€.
if prm1 == "getget" and prm2 == "rerequest":
μ΄ λ΄μ© κ·Έλλ‘ ν€μλλ₯Ό μ λ ₯ν΄ λ³΄λ, ν΄κ²°μ΄ λ λ― STEP 2λ‘ μΆμ λλ νλ©΄μ΄ λνλλ€.
μμ μ½λλ₯Ό λ€μ μ΄ν΄λ³΄λ©΄ μμ STEP 1μ λ΅μ΄ μλ, λ λ€μ paramκ³Ό param2λ₯Ό μΈκΈνλ μ½λκ° λμ¨λ€.
if prm1 == "pooost" and prm2 == "requeeest":
μ΄ λ΄μ© κ·Έλλ‘ ν€μλλ₯Ό μ λ ₯ν΄ λ³΄λ©΄,
νλκ·Έλ₯Ό μλ € μ€λ€. μ΄ λ΄μ© κ·Έλλ‘ λλ¦Όν΅ λ¬Έμ νμ΄μ§μ μ λ ₯νλ©΄ ν΄κ²° μλ£
'SWUFORCE > μκ²μ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Dreamhack] php7cmp4re (web) (0) | 2024.05.07 |
---|---|
[Dreamhack] Carve Party (web) (0) | 2024.05.01 |
[Dreamhack] Flying Chars (0) | 2024.04.02 |
[Dreamhack] ex-reg-ex(web) (0) | 2024.04.02 |
[Dreamhack] file-download-1(web) (0) | 2024.03.26 |