5주차_Webhacking 과제3 : XSS game [level 1-5]

2023. 11. 5. 11:08SWLUG/web hacking

 

세번째 문제이다.

 

XSS game (xss-game.appspot.com)

 

XSS game

Welcome, recruit! Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn to dispatch the

xss-game.appspot.com

 

📌 풀이

 

처음 들어가보니 아래와 같은 화면이 떴다.

 

수업시간에 실습했던 내용이라 앞에 3개가 풀려있었다.

 

 

 

 

 

첫번째 문제이다.

해당문제는 script를 활용해서 쿼리문을 작성, search해야하는 문제이다.

 

 

 

 

이걸 활용해서 풀어야하는데, 아래 내용을 검색창에 삽입하면된다.

<script>alert('SWLUG');<scipt>

 

 

 

 

두번째 문제이다.

 

 

해당 문제는 img태그를 사용해야하고, onerror를 사용해서 풀이해야한다.

 

*onerror: JavaScript에서 이미지를 로드할 때, 오류를 처리하기 위한 이벤트를 말한다.

 

[ 참고 자료 ]

 

[JavaScript] 이미지 불러오기 오류시 onerror (tistory.com)

 

[JavaScript] 이미지 불러오기 오류시 onerror

onerror - 이미지를 로드할 때 오류가 발생하면 작동한다. - 외부 파일 (예 : 문서 또는 이미지)을로드하는 동안 오류가 발생하면 작동한다. 아래는 이미지를 로드하려는데 서버에서 불러오는게 느

wms0603.tistory.com

 

<img src= "SWLUG" onerror= " alert('ZZANG')";>

 

 

세번째 문제이다.

 

 

해당 문제는 이미지가 3개있는데, 특이한 점은 이미지 숫자에 따라서 url도 바뀐다는 것이다. 이점을 이용해서 풀이하면 될것같다.

 

이게 window.location.hash가 URL 안 의 frame 번호를 구분해주는 것이라고 한다.

 

 

숫자뒤에 hi라고 삽입하자마자 에러가 뜬다.

이 부분을 이용해서 문제를 풀었다.

' onerror= ' alert("SWLUG")'

 

 

 

네번째 문제이다.

 

 

create timer를 누르니까 로빙바만 떴다.

 

 

 

힌트1 :

해당 문제는 이미지 태그에 onload 이벤트 핸들러가 사용, 내가 입력한 값이 startTimer함수에 입력되는 것을 이용해서 풀어야한다고 한다.

 

*onload: JavaScript에서 이미지 등 문서의 모든 컨텐츠가 로드된 후에 발생하는 이벤트(DOM의 standard 이벤트)를 말한다.

 

[ 참고 자료 ]

 

javaScript - window.onload()란? (velog.io)

 

javaScript - window.onload()란?

지도 라이브러리를 찾아보다가 onload()라는 함수를 발견했고, 궁금해서 찾아보았다. 위와 같이 사용을 하면, 원칙상으로 자바스크립트의 document.getElementById( 'id' );가 html 내부 id가 test 이란 태그가

velog.io

 

힌트2 :

HTML인코더를 사용해야한다.

 

인코더 : [URL 인코더, 디코더] url인코딩, url디코딩 - 바로 변환해드려요! (tistory.com)

 

[URL 인코더, 디코더] url인코딩, url디코딩 - 바로 변환해드려요!

Encoding Decoding 복사버튼은 현재 크롬에서만 지원가능합니다. 안녕하세요. 개인적으로 url인코딩 및 url디코딩을 자주 변환해서 자바스크립트로 기반으로 URL인코더 및 URL디코더를 만들었습니다. (

heavenly-appear.tistory.com

https://xss-game.appspot.com/level4/frame?timer=(‘{{timer}}’); 로 전달 되는 것을 확인할 수 있다.

 

 

 

계속 로딩바만 뜬다.

 

 

개발자 도구로 소스 코드를 확인해보니까 위 그림처럼 세미콜론부터 들어가지 못하는 것을 확인할 수 있다.

그래서 세미콜론을 URL인코딩을 하여 %3B으로 삽입하였다.

 

 

 

 

다섯번째 문제이다. ( 위 내용까지는 지난 수업 Writeup , 아래부터는 이번주 과제이다. )

 

 

sign up을 클릭하니 위와 같이 이메일을 넣는 창이 생성됐다.

일단은 나는 swlug@swu.ac.kr을 넣어봤다.

결국은 다시 처음으로 돌아왔다. 별다른 반응이 없다.

 

 

그래서 개발자도구를 열어서 여기저기 샅샅히 봐봤지만, 내눈에 들어오는 힌트는 딱히 없었다.

그래서 힌트를 봤다.

 

내용을 정리해보자면 아래와 같다.

1. 이 레벨의 제목은 힌트입니다.
2. 가입 프레임의 소스를 살펴보고 URL 매개변수가 어떻게 사용되는지 확인하는 것이 유용합니다.
3. 링크를 클릭하면 Javascript가 실행되도록 하려면 (onclick 핸들러를 사용하지 않고), 어떻게 할 수 있을까요?
4. 진짜로 막혀있다면, 이 IETF 초안을 살펴보세요.

 

1. 제목이 Breaking protocol 이다. 규칙(규약) 을 깨라는 뜻인것  같다.

2. 아래와 같이 확인해봤다.

 

3. 이 부분에 대한 고민이 진짜 많이 들었다. 그래서 찾아봤다.

 

onclick핸들러가 뭘까?

: 마우스를 클릭해서 넘기는게 아니고 url로 다음페이지로 넘기라는 것 같다.

 

이벤트 핸들러 (EventHandler) :: 히찌리의 개 발 새 발 (tistory.com)

 

이벤트 핸들러 (EventHandler)

이벤트 핸들러 (EventHandler) 이벤트(Event) 란? 이벤트는 웹 브라우저에서 DOM 요소와 사용자가 상호작용하는 것을 의미한다. 사용자가 버튼을 클릭하거나 입력창에 정보를 입력하거나 하는 행위들

hi-zini.tistory.com

https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert(1);

 

위와 같이 url을 입력하면 signup을 누르지않고 다음 단계로 넘어가는데 해당 페이지에서 어떤 이메일을 입력하던지

Next를 누르면 clear되는 것을 확인할 수 있다.

위 코드에서 next를 누르면 나오는 값이 이미 정해져있기때문인것 같다.

 

 

 

5주차 내용이 지난 주차 내용들에 비해 많이 어려워서 아직 이해가 덜되었다고 느꼈다.

스스로 할 수 있는 부분이 없어서 많이 찾아봤고, 아직은 이해해야하는 부분이 더 많아서 다음 수업 전까지 계속 학습해야할 것 같다..

 

 

[ 참고 자료 ]

 

XSS-Game - Level 5: Breaking protocol (Writeup/문제풀이) (tistory.com)

 

XSS-Game - Level 5: Breaking protocol (Writeup/문제풀이)

5단계 문제는 이전의 문제와는 약간 달랐다. 이전의 문제의 경우에는 우리가 입력한 input 값이 결과 값이나 다음 페이지에 출력되어서, script가 삽입되었었다. 하지만 이번에는 우리가 입력한 값

domdom.tistory.com