전체 글 82

[dreamhack] level 1 csrf-1

엔드포인트 분석/vuln@app.route("/vuln")def vuln(): param = request.args.get("param", "").lower() xss_filter = ["frame", "script", "on"] for _ in xss_filter: param = param.replace(_, "*") return param유저가 입력한 param 값을 소문자로 바꿔서 param 변수에 저자함. frame, script, on을 필터링하고 해당 키워드들을 *로 변환함. /memo@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", None) if t..

CTF & Wargame(WEB) 2025.04.13

[dreamhack] level 1 xss-2

/vuln사용자가 입력한 값을 출력한다/memo사용자가 memo에 입력한 값을 출력한다./flag사용자가 param에 입력한 Url로 이동한다. 엔드포인트 분석/vuln@app.route("/vuln")def vuln(): return render_template("vuln.html")xss-1과는 다르게 /vuln 페이지에서는 render_template 함수를 사용하여 vuln.html을 띄워준다. render_template 함수는 전달된 템플릿 변수를 HTML 엔티티로 변환하여 전달하기 때문에 xss가 발생하지 않는다. /memo@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", "") ..

CTF & Wargame(WEB) 2025.04.12

[dreamhack] level 1 xss-1

/vuln사용자가 입력한 파라미터대로 출력해준다./memomemo= 에 입력한 값을 그대로 출력해준다./flag전달된 url에 사용자가 접속하도록 한다. /vuln@app.route("/vuln")def vuln(): param = request.args.get("param", "") return paramget 방식으로 param을 이용자에게 입력받고 param의 값을 출력한다. /memo@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", "") memo_text += text + "\n" return render_template("memo.html", memo=memo_text)..

CTF & Wargame(WEB) 2025.04.12