4

문제 질문입니다

궁금한게 이 문제는 강의에 있는 내용만 가지고도 풀 수 있는 문제인가요? Vuln.html 파일을 제공한 이유가 |safe 가 있는 것을 보여 줄려고 그런건지 아님 문제 풀이에 다른 힌트가 있어서 그런건지 알고 싶습니다

답변 2개
2

강의에 있는 내용만 가지고도 풀 수 있습니다. CSP Bypass 문제와 CSP Bypass Advanced문제는 같은 점도 있고 다른 점도 있습니다. 두 문제의 /vuln이 모두 ?param=<img ...> <script ...>을 통해서 태그를 삽입하는 게 가능합니다. CSP Bypass Advanced도 왜 그렇냐면 flask의 render인 jinja2에서는 {{ param | safe }}처럼 | safe를 붙여주면 template render에서 기본적으로 해주던 위험한 문자 <, >에 대한 html enitites escape를 하지 않아주기 때문입니다(&lt;, &gt;로). 그래서 <, >가 그대로 삽입됩니다. 하지만 CSP bypass 문제의 payload를 주고 /vuln 페이지를 비교해보면 두 문제에서 vuln 페이지가 확실히 다르다는 것을 눈으로도, F12 개발자도구의 요소(element)창에서도 알 수 있습니다. 그리고 CSP Bypass 문제에서의 payload가 CSP Bypass Advanced에서는 왜 안되는지 개발자도구 콘솔창에서 Uncaught SyntaxError: Unexpected token '<'라고 나옵니다. 이것을 단서로 강의내용을 참고하시면 문제를 푸실 수 있습니다.

1

chrome에서 로그 분석은 어떻게 해야 할까요?
flag 페이지에 payload를 넣거나, console에서 실행을 시켜도 에러가 정확하게 나오지 않아서 어떻게 접근해야 할지 고민입니다.
위으 설명 대로, <,> 등의 메타는 넘어간다고 해서… CSP Bypass 에서 사용된 페이로드를 넣어도 딱히 어떻게 문제점을 분석해야 할지…
–> CSP Bypass Advanced에서는 왜 안되는지 개발자도구 콘솔창에서도 나옵니다. : 여기가 크롬에서는 로그가 없네요…
Navigated to http://host1.dreamhack.games:9881/flag