일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바 Array list
- php
- Lord of sqlinjection
- lord of sqlinjection`
- 쿠키
- 스프링 특징
- 소켓
- lord of sqlinjectin
- 스프링 종류
- 클라이언트
- 세션
- 자바 is-a
- sqlinjection
- 서버
- 자바
- injection
- 자바 has-a
- 웹
- APM
- 보안
- XSS
- 세션쿠키
- sql
- Los
- 자바 문법
- 웹 개발
- 해킹
- 스프링
- 마이크로서비스 아키택트
- 스프링구조
- Today
- Total
LJ
XSS game level 6 본문
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 |