우선 제공되는 XSS문제의 py코드를 확인해보아야한다.

문제를 푸는데 중요한 부분만 우선적으로 확인해보자.
우선 render_template를 사용하면 템플릿 변수를 기록할 때 HTML엔티티코드를 변환해 저장하므로 XSS가 발생하지 않는다. 이 경우를 생각하고 코드를 분석해야한다.

위 코드를 보면 param의 값을 출력하는 코드다.

위 코드는 이용자가 전달한 memo의 값을 render_template를 이용하여 기록하고 출력한다.

요청에 따라 다른 기능을 수행한다.
GET의 경우 이용자에게 URL을 입력받는 페이지를 제공한다.
POST의 경우 param의 값과 쿠키에 FLAG를 포함해 check_XSS 함수를 호출한다. check_XSS는 vuln에 접속한다.
이제 해당 문제의 페이지를 접속해본다.

위부터 차례대로 접속해본다.


접속해보면 alert 알람을 그대로 출력하는걸 볼 수 있다. XSS가 가능하다는 것이다.

memo 에서는 접속할때마다 hello라는 메세지를 남긴다.

flag에서는 입력을 받는 화면이 나온다. 다양한 화면이 있지만 현재 해봐야할 것은 제공된 코드를 보고 취약점을 파악하는것이다. /flag를 확인하면 check_xss에서 vuln에 접근하는걸 확인할 수 있다. 이를 이용해보자.
<script>location.href = "/memo?memo=" + document.cookie;</script>
해당 구문을 이용하면 memo페이지에서 플래그를 확인할 수 있다