LJ

XSS game level 6 본문

IT 보안/보안첼린지

XSS game level 6

짱준재 2024. 5. 20. 15:41

 

 

 

XSS game level 6 이다.

 

 

 

 

 

아래 코드를 보면

 

 

 

 

 

js 파일이 해시값을 통해 로드 되는 것을 알 수 있다.

(브라우저 주소의 해시값은 # 기호로 시작하는 문자열로, 웹 페이지의 특정 위치나 기능을 참조하는 데 사용)

 

이를 통해 , 외부 악성 js 파일을 로드 시키면 해결될 것으로 보인다.

 

 

window.location.hash: 이 속성은 현재 브라우저 주소의 해시값을 문자열로 반환한다. 해시값은 # 기호로 시작하며, 해시값의 내용은 # 이후에 오는 모든 문자열이다.

 

.substr(1): 이 메서드는 문자열의 특정 위치부터 시작하여 원하는 길이의 하위 문자열을 추출한다. 이 경우, 첫 번째 문자는 제외하고 (substr(1)) 나머지 문자열을 추출한다.

 

 

|| "/static/gadget.js": 이는 논리 OR 연산자(||)이다. 만약 window.location.hash의 값이 비어있다면 (즉, 해시값이 없다면), "/static/gadget.js" 문자열을 반환한다.

 

이때 URL 스킴 ( URL의 첫 번째 부분으로, 특정 자원에 어떻게 접근해야 하는지를 나타내는 역할을 한다.)을 활용해 

 

외부 데이터를 URL로 표현한 악성

 

#data:text/javascript,alert(1); 를 삽입한다.

 

 

 

 

문제가 해결된다.

 

 

이외에 개인 서버에 올린 것을 가져오거나 pastebin.com 사이트를 이용하는 경우가 있다. 

 

 

그리고 추가로 힌트를 클릭해서 보면 아래와 같은 문구가 뜨게 되는데  

 

이 경우 callback 함수를 alert로 바꾸면 문제가 해결된다.

 

callback 매개변수를 받아서 처리하도록 설계된 JavaScript 파일에 한해서만, ?callback=alert와 같은 매개변수가 동작하게 되는데 google에서 제공하는 https://www.gstatic.com/charts/loader.js 에서는 매개변수가 동작하게 되어 나타나는 동작이다.

 

 

 

 

 

 

'IT 보안 > 보안첼린지' 카테고리의 다른 글

Lord of SQLinjection ( 9번 ) vampire  (0) 2024.05.23
Lord of SQLinjection ( 8번 ) troll  (0) 2024.05.23
XSS game level 5  (0) 2024.05.20
XSS game level4  (0) 2024.05.17
Lord of SQLinjection ( 7번 )  (0) 2024.05.17
Comments