@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")
step1부터 보면 param과 param2를 맞게 입력하면 prev_step_num에 step1_num을 넣어서 step2 링크로 이동한다.
이렇게 입력해서 제출하면
이렇게 step2로 이동한다.
@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")
step2 코드를 보면 prev_step_num이 step1_num이어야 제대로 페이지가 뜨기 때문에 step1에서 접근을 해야 한다.
@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")
마지막으로 flag 부분을 보면 prm1과 prm2가 맞아야 flag가 나오는데
step2에서 param과 param2를 입력하는 부분이 있어서
이렇게 제출하면 flag가 나오는 페이지로 이동된다.
'웹해킹' 카테고리의 다른 글
드림핵 web-misconf-1 롸업 (0) | 2023.12.22 |
---|---|
드림핵 session 롸업 (1) | 2023.12.20 |
드림핵 ex-reg-ex 롸업 (0) | 2023.12.20 |
드림핵 Flying Chars 롸업 (0) | 2023.12.20 |
드림핵 phpreg 롸업 (0) | 2023.12.19 |