@app.route("/admin/notice_flag")
def admin_notice_flag():
global memo_text
if request.remote_addr != "127.0.0.1":
return "Access Denied"
if request.args.get("userid", "") != "admin":
return "Access Denied 2"
memo_text += f"[Notice] flag is {FLAG}\n"
return "Ok"
app.run(host="0.0.0.0", port=8000)
vuln에서 param를 가져와서 xss 필터링 항목이 있으면 *으로 대체
127.0.0.1로 요청해야 하고, userid 필드을 admin으로 주면 flag를 출력해준다.
홈에서 notice flag 경로로 가면 admin_notice_flag 에 따라 처리해주는데 127.0.0.1으로 요청할 수 없기 때문에 아니기 때문에 Access Denied가 뜬다.
flag 페이지에서는 127.0.0.1:8000으로 요청을 보낼 수 있어서, admin_notice_flag 함수 조건에 맞게 줄 수 있다.
xss_filter = ["frame", "script", "on"]에서 확인할 수 있듯이 img 태그는 필터링하지 않는다.
[Dreamhack] file-download-1 (0) | 2022.11.24 |
---|---|
[Dreamhack] proxy-1 (0) | 2022.01.04 |
[Dreamhack] command-injection-1 (0) | 2022.01.03 |
[Dreamhack] pathtraversal (0) | 2021.03.08 |
[Dreamhack] simple_sqli (SQL Injection) (0) | 2021.02.09 |