전공쪽/동아리 관련

xss game level 1~6

OSOR2 2020. 12. 29. 14:51

Level 1

매우 간단한 XSS 문제이다. alert을 띄우는 것이 목표인데, 아무런 검증을 하지 않아서

<script>alert(1)</script> 를 해주면 '1'이 알림창으로 뜬다.


Level 2

이번에는 <script> 태그가 필터링 되어서 OnClick 핸들러를 이용했다. 버튼을 만들어서 핸들러를 달아주었다.

 

<button OnClick="alert('OSORI')">눌러</button>


Level 3

코드를 보고 취약점을 찾을 수 있었다. SQL Injection 비슷하게 작동하는 것 같다. 

인자로 1.jpg"' OnClick="alert('1')"/> 를 주어서 html 변수가 만드는 img 에 OnClick 핸들러를 넣어주었다.  


Level 4

startTimer 에 들어가는 변수인 timer의 내용을 우리 마음대로 주무를 수 있다.

그래서 화면에 나와있는 것 같이 인자를 구성해서 보냈다. 그런데 ; 를 쓸 때 sql injection에서 #을 %23으로 보냈던 것 처럼 ; 도 %3b로 보내줘야지 작동을 했다. 


Level 5 

저 href에 들어가는 것을 바꿀 수 있어서 그냥 alert은 줬는데 안되서 찾아보니까 href서 javascript를 쓰려면 javascript:function 이렇게 주어야 한다고 한다. 아니면 요즘은 OnClick 을 사용하는 것을 추천한다고 한다. 유저에게 세세한 기능을 숨길 수 있다나..


Level 6

 외부 js 파일도 가지고 올 수 있는 것 같아서 내 서버에 js 를 올리고 로드 했으나 아무일도 일어나지 않았다. 

그래서 힌트를 보고 풀었는데, 왜 내 파일은 안된건지 이유를 모르겠다. 

(추가)

https 가 아니라 http 라서 그렇다는 말이 있다. 그런데 https 는 설정을 하려면 좀 복잡한 것 같았다. 

data url scheme 라는 것이 있는데

외부 데이터를 url로 표현하는 방식이라고 한다. 

이것을 이용해서 풀이도 가능한 것 같다. js 포맷만 가져오는 루틴이 없기 때문에..