목표 : 기본 XSS 코드
임무 설명
이 수준은 사용자 입력이 적절한 이스케이프 없이 페이지에 직접 포함되는 교차 사이트 스크립팅의 일반적인 원인을 보여줍니다.
아래의 취약한 응용 프로그램 창과 상호 작용하고 선택한 JavaScript를 실행하는 방법을 찾으십시오. 취약한 창 내에서 조치를 취하거나 해당 URL 표시줄을 직접 편집할 수 있습니다.
(원문) Mission Description
임무 목표
alert()
Plain Text
복사
아래 프레임에 JavaScript를 팝업하는 스크립트를 삽입하십시오 .
경고를 표시하면 다음 단계로 넘어갈 수 있습니다.
(원문) Mission Objective
Your Target
Target Code
#level.py
page_header = """
<!doctype html>
<html>
<head>
<!-- Internal game scripts/styles, mostly boring stuff -->
<script src="/static/game-frame.js"></script>
<link rel="stylesheet" href="/static/game-frame-styles.css" />
</head>
<body id="level1">
<img src="/static/logos/level1.png">
<div>
"""
page_footer = """
</div>
</body>
</html>
"""
main_page_markup = """
<form action="" method="GET">
<input id="query" name="query" value="Enter query here..."
onfocus="this.value=''">
<input id="button" type="submit" value="Search">
</form>
"""
class MainPage(webapp.RequestHandler):
def render_string(self, s):
self.response.out.write(s)
def get(self):
# Disable the reflected XSS filter for demonstration purposes
self.response.headers.add_header("X-XSS-Protection", "0")
if not self.request.get('query'):
# Show main search page
self.render_string(page_header + main_page_markup + page_footer)
else:
query = self.request.get('query', '[empty]')
# Our search engine broke, we found no results :-(
message = "Sorry, no results were found for <b>" + query + "</b>."
message += " <a href='?'>Try again</a>."
# Display the results page
self.render_string(page_header + message + page_footer)
return
application = webapp.WSGIApplication([ ('.*', MainPage), ], debug=False)
Python
복사
문제 풀이
cake를 입력하면 GET 인자로 cake를 넘기고 검색 결과가 없다고 돌아가라는 페이지를 보여준다.
# Our search engine broke, we found no results :-(
message = "Sorry, no results were found for <b>" + query + "</b>."
message += " <a href='?'>Try again</a>."
Python
복사
코드를 봐도 아무런 결과도 얻을 수 없다.
self.response.headers.add_header("X-XSS-Protection", "0")
JavaScript
복사
헤더에서 디폴트 값이 1인 X-XSS-Protection 값을 0으로 만들었으므로 XSS 공격이 아무런 필터 없이 가능하다.
<script>
alert('hi');
</script>
JavaScript
복사
목표는 alert를 실행시키는 것으로 일반적인 alert를 실행시키는 JavaScript 코드다.
검색창에 넣고 실행시키면 바로 문제가 해결된다.