궁금한게 이 문제는 강의에 있는 내용만 가지고도 풀 수 있는 문제인가요? Vuln.html 파일을 제공한 이유가 |safe 가 있는 것을 보여 줄려고 그런건지 아님 문제 풀이에 다른 힌트가 있어서 그런건지 알고 싶습니다
chrome에서 로그 분석은 어떻게 해야 할까요?
flag 페이지에 payload를 넣거나, console에서 실행을 시켜도 에러가 정확하게 나오지 않아서 어떻게 접근해야 할지 고민입니다.
위으 설명 대로, <,> 등의 메타는 넘어간다고 해서.. CSP Bypass 에서 사용된 페이로드를 넣어도 딱히 어떻게 문제점을 분석해야 할지..
--> CSP Bypass Advanced에서는 왜 안되는지 개발자도구 콘솔창에서도 나옵니다. : 여기가 크롬에서는 로그가 없네요..
Navigated to http://host1.dreamhack.games:9881/flag..
강의에 있는 내용만 가지고도 풀 수 있습니다. CSP Bypass
문제와 CSP Bypass Advanced
문제는 같은 점도 있고 다른 점도 있습니다. 두 문제의 /vuln이 모두 ?param=<img ...> <script ...>
을 통해서 태그를 삽입하는 게 가능합니다. CSP Bypass Advanced
도 왜 그렇냐면 flask의 render인 jinja2에서는 {{ param | safe }}
처럼 | safe
를 붙여주면 template render에서 기본적으로 해주던 위험한 문자 <
, >
에 대한 html enitites escape를 하지 않아주기 때문입니다(<
, >
로). 그래서 <
, >
가 그대로 삽입됩니다. 하지만 CSP bypass
문제의 payload를 주고 /vuln 페이지를 비교해보면 두 문제에서 vuln 페이지가 확실히 다르다는 것을 눈으로도, F12 개발자도구의 요소(element)창에서도 알 수 있습니다. 그리고 CSP Bypass
문제에서의 payload가 CSP Bypass Advanced
에서는 왜 안되는지 개발자도구 콘솔창에서 Uncaught SyntaxError: Unexpected token '<'
라고 나옵니다. 이것을 단서로 강의내용을 참고하시면 문제를 푸실 수 있습니다.