Level 5 시작!
별다른 입력값 없이 Sign up 링크만 있다.
Sign up 을 누르면 email 을 입력하는 signup.html 로 이동한다.
Next 를 누르면 또 다른 페이지로 이동하고 url 를 보면 next 인자를 통해 어떤 값을 전달하는 것을 알 수 있다.
이메일에 아무 값이나 입력하고 Next 버튼을 누르면 위의 페이지가 뜨고 몇 초 뒤에 첫 페이지로 이동한다. 이메일로 입력한 값은 따로 출력되지 않고 있다.
소스코드를 보자.
이메일을 입력하는 signup.html 의 소스코드를 보면 Next 를 눌렀을 때 next 인자의 값을 가진 링크로 이동하는 것을 알 수 있다.
confirm.html 의 소스코드를 보니 email 값은 전달되지 않고 있다. 때문에 url 에서 입력할 수 있는 next 값을 통해 XSS 공격을 수행해야 한다. 위와 같이 url 로 입력받은 next 값은 confirm.html 에서 window.location 안에 들어가고 있다.
next 인자에 아무 값이나 주고 Next 를 클릭해보았다.
next 값을 abcd 로 주고 Next 를 클릭하니 첫 페이지인 welcome 페이지로 돌아왔다. abcd 이외에도 페이지 이름이 아닌 다른 값을 넣으면 모두 welcome 페이지로 이동했다.
next 에 여러 값을 넣으면서 발견한 사실은 Next 링크를 클릭할 때, 조건문이 존재한다는 것이었다.
1. next 값에 signup 이 포함되면 signup.html 로 이동
2. next 값에 confirm 이 포함되면 confirm.html 로 이동
3. next 값이 1,2 이외의 값이면 welcome.html 로 이동
2번 조건의 경우 confirm 을 포함한 어떤 next 값을 주어도 몇 초 뒤에 모두 welcome.html 로 이동하였다. next 값을 welcome 으로 바꿔주는 로직이 존재하는 것 같다.
confirm.html 에서 alert() 를 실행할 수 없으니 signup.html 에서 실행해야 한다.
링크로 alert() 를 실행할 수 있는 방법 중에 javascript:alert() 를 이용하는 방법이 있다.
이를 이용하여 XSS 를 수행해보자.
next 값 : javascript:alert(1)
적용되는 <a> 태그 : <a href = "javascript:alert(1)">Next >></a>
성공!!
# javascript scheme 을 이용한 XSS 페이로드로 참고할만한 사이트
https://owasp.org/www-community/xss-filter-evasion-cheatsheet
'WarGame > XSS game' 카테고리의 다른 글
XSS game - Level 6 (0) | 2020.08.02 |
---|---|
XSS game - Level 4 (0) | 2020.07.27 |
XSS game - Level 3 (0) | 2020.07.27 |
XSS game - Level 2 (0) | 2020.07.26 |
XSS game - Level 1 (0) | 2020.07.26 |