문제
드림핵의 webhacking 로드맵 과정 중 Cross-Site-Scripting(XSS) 섹션의 첫 번째 단계인 xss-1문제를 살펴보겠습니다.

xss취약점을 이용하여 플래그를 획득해야 합니다. 우선 웹사이트에 접속해 보겠습니다.

이런 화면으로 구성되어 있으며 vlun(xss) page와 memo와 flag와 메인페이지 총 네 페이지로 구성되어 있습니다.

1.@app.route("/") : 사용자가 웹사이트 접속 시에 처음으로 나오는 페이지입니다.
2.@app.route("/vuln") : 사용자가 /vuln페이지에 접속하면 param값을 반환하며 param값이 없다면 1을 반환합니다.
3.@app.route("/flag", methods=["GET", "POST"]) : GET과 POST 두 가지 방식의 요청을 처리할 수 있습니다. GET요청의 경우 "flag.html"템플릿을 렌더링 하고 POST 요청의 경우 폼 데이터에서 "param"값을 가져와 check_xss() 함수를 호출하여 /vuln페이지에 쿠키를 포함시킨 요청을 보내고 그 결과를 반환하는 역할을 합니다.
플래그 획득방법

xss페이지로 이동하여 <script> location.href = "http://127.0.0.1:8000/memo?memo=" + document.cookie;</script>를 입력합니다.

http://127.0.0.1:8000/memo?memo=FLAG 형태로 구성되어 있으며 memo페이지로 돌아가보면 flag가 출력되는 걸 확인할 수 있습니다.