웹/드림핵28 csrf-2 [문제] [풀이] @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 /vuln 페이지를 구성하는 코드이다. 코드를 살펴보면 이용자가 전달한 param 파라미터의 값을 출력한다. 이때, 이용자의 파라미터에 "frame", "script", "on" 3가지의 악성 키워드가 포함되어 있으면 이를 '*' 문자로 치환한다. 해당 키워드 필터링은 XSS 공격을 방지하기 위한 목적으로 존재한다. /vuln 페이지에 접속하면 ' return '' /.. 2022. 9. 3. csrf-1 [문제] [풀이] @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 /vuln 페이지를 구성하는 코드이다. 코드를 살펴보면 이용자가 전달한 param 파라미터의 값을 출력한다. 이때, 이용자의 파라미터에 "frame", "script", "on" 3가지의 악성 키워드가 포함되어 있으면 이를 '*' 문자로 치환한다. 해당 키워드 필터링은 XSS 공격을 방지하기 위한 목적으로 존재한다. /vuln 페이지에 접속하면 ' return '' /.. 2022. 9. 3. xss-2 [문제] [풀이] @app.route("/vuln") def vuln(): return render_template("vuln.html") /vuln 페이지를 구성하는 코드이다. 코드를 살펴보면 render_template 함수를 통해 vuln.html을 출력한다. /vuln 페이지에 접속하면 vuln.html의 내용을 확인할 수 있다. URL의 script 태그로 인해 alert 창이 출력되어야 하지만 출력되지 않는 것을 알 수 있다. @app.route("/memo") def memo(): global memo_text text = request.args.get("memo", "") memo_text += text + "\n" return render_template("memo.html", memo=.. 2022. 9. 1. xss-1 [문제] [풀이] @app.route("/vuln") def vuln(): param = request.args.get("param", "") return param /vuln 페이지를 구성하는 코드이다. 코드를 살펴보면 이용자가 전달한 param 파라미터의 값을 출력한다. /vuln 페이지에 접속하면 script 태그로 인해 alert 창이 뜨는 것을 확인할 수 있다. @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) /memo 페이지를 구성하는 코드이다. 코드를 살.. 2022. 8. 21. Session-basic [문제] [풀이] users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } # this is our session storage session_storage = { } @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: # get username from session_storage username = session_storage[session_id] except KeyError: return render_template('index.html') return render_template('index.html', text=f'Hello {userna.. 2022. 8. 20. Cookie [문제] [풀이] users = { 'guest': 'guest', 'admin': FLAG } @app.route('/') def index(): username = request.cookies.get('username', None) if username: return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}') return render_template('index.html') 코드를 살펴보면 admin 계정으로 로그인 시, 플래그를 얻을 수 있는 것으로 보인다. 먼저 guest 계정으로 로그인 하였다. guest 계정의 Co.. 2022. 8. 20. 이전 1 2 3 4 5 다음