http://natas0.natas.labs.overthewire.org natas0/natas0으로 로그인 패스워드가 이 화면에 있다고 하니 페이지 소스를 살펴본다. 바로 비밀번호를 찾을 수 있었다. Password: gtVrDuiDfck831PqWsLEZy5gyDz1clto
url바의 frame# 뒤에 있는 주소가 화면에 나타난다. (Loaded gadget from ~) js파일에 alert함수를 추가하고 url로 불러오는 방법을 생각했는데, 이는 서버를 사용해야 한다. 그래서 검색하던 중 Data URL Scheme이라는 방법을 알게 되었다. 외부 데이터를 URL로 표현하는 방법이라고 한다. 형식은 data:[자료타입], [데이터] 이다. 따라서 url바에 다음과 같이 입력해주었다. data:text/javascript, alert('hi') 성공적으로 알림창을 띄운다.
Sign up을 누르면 다음과 같이 변한다. url에 confirm 값이 생겼다. Enter email 칸에 aa를 입력하고 Next를 누르니 다음과 같이 변한다. 초기화면으로 돌아왔는데 이번에는 url에 welcome이 추가되었다. enter email 화면의 url에서 next 다음 값을 변조하면 될 것 같다. 힌트를 보니 자바스크립트를 이용하라고 해서 next 뒤에 javascript: alert('hi')를 추가했다. next를 누르니 성공적으로 알림창을 띄운다.
초기 상태에서 Create timer 버튼을 누르면 아래와 같이 3초 뒤 Time is up! 창이 뜬다. url바에는 frame뒤에 ?timer=3이 추가된 것을 볼 수 있다. timer.html의 코드를 보면 startTimer('{{ timer }}')의 형식인 것을 알 수 있다. 따라서 xss-game.appspot.com/level4/frame?timer=1');alert('hi 를 입력하면 형식이 맞을 것 같다. 알림창이 뜨지 않는다. 힌트를 보니 인코딩 작업이 필요하다고 해서 다음과 같이 수정했다. frame?timer=1')%3Balert('hi 성공적으로 알림창을 띄우며 클리어했다.