about absolroot
home

XSS-Game Level 3: That sinking feeling...

목표 : window.location.hash

임무 설명

이전 수준에서 본 것처럼 일부 일반적인 JS 함수는 실행 싱크 입니다 . 즉, 입력에 나타나는 모든 스크립트를 브라우저가 실행하게 합니다. 때때로 이 사실은 후드 아래에서 이러한 기능 중 하나를 사용하는 상위 수준 API에 의해 숨겨집니다.
이 수준의 애플리케이션은 이러한 숨겨진 싱크 중 하나를 사용하고 있습니다.

(원문) Mission Description

임무 목표

alert()
Plain Text
복사
이전과 마찬가지로 스크립트를 삽입하여 앱에 JavaScript를 팝업합니다 .
애플리케이션 어디에도 페이로드를 입력할 수 없으므로 아래 URL 표시줄에서 주소를 수동으로 편집해야 합니다.

(원문) Mission Objective

Your Target

Target Code

Index.html

level.py

문제 풀이

버튼을 누르면 URL의 frame#no를 통해 표현된다.
다른 특징은 없기에 no 부분이 공격 벡터가 될 거라 추측할 수 있다.
여기서 알아야할 개념이 있다.

✓ window.location.hash

window.location.hash는 현재 페이지 URL의 조각 식별자("#" 기호 뒤에 오는 URL 부분)를 나타내는 JavaScript의 window객체 속성
window.location.hash = num; ... window.onload = function() { chooseTab(unescape(self.location.hash.substr(1)) || "1"); } ... window.addEventListener("message", function(event){ if (event.source == parent) { chooseTab(unescape(self.location.hash.substr(1))); } }, false);
JavaScript
복사
self.location.hash.substr(1) : #cloud1.jpg → cloud1.jpg
unescape : URL Decode
html += "<img src='/static/level3/cloud" + num + ".jpg' />"; $('#tabContent').html(html);
JavaScript
복사
코드를 상세히 살펴보면 입력한 값 앞에는 cloud 뒤로 .jpg를 붙여 로딩하는 것을 확인할 수 있다.
2번과 동일하게 img를 불러오는 형태이므로 onerror를 활용하자.
<img src = '/static/level3/cloud' onerror='alert(1)' .jpg' />
JavaScript
복사
바로 alert가 실행된다.

✓ XSS Game

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2024. absolroot all rights reserved.