문제 풀이
Mission Description
Cross-site scripting isn't just about correctly escaping data. Sometimes, attackers can do bad things even without injecting new elements into the DOM.
사이트 간 스크립팅은 데이터를 올바르게 이스케이프하는 것이 그냥은 아닙니다. 때때로 공격자는 DOM에 새로운 요소를 삽입하지 않고도 나쁜 일을 할 수 있습니다.
Mission Objective
Inject a script to pop up an alert() in the context of the application.
스크립트를 삽입하여 애플리케이션 컨텍스트에서 alert()를 출력합니다.
Write Up
Google 페이지와 비슷한 페이지가 출력됐다.
첫 페이지에 할 것이 Sign up 링크로 이동하는 것 밖에 없어서 이동하였다.
이동하니, Email를 넣는 Input이 있었다. 일단 lrtk@lrtk.lrtk을 넣었다.
Email에 lrtk@lrtk.lrtk를 넣고 Next 링크를 들어가니, 가입 인사와 곧 리다이렉트된다는 문구가 출력됐다.
리다이렉트의 주소는 첫 페이지로 리다이렉트됐다.
여기까지 확인하였을 때, Email의 Input은 페이지에 반영되는 것이 없는 것으로 보였다.
그래서 signup 페이지의 next 파라미터가 의심이 갔다.
그래서 signup 페이지의 next 파라미터를 lrtk으로 요청하여 코드를 확인해보니, a 태그의 href 속성의 값으로 반영된 것을 확인할 수 있었다.
나는 next 파라미터에 '><script>alert(1)</script><'를 넣어서 요청을 하면 XSS가 반영이 될 것이라 생각하여 시도하였다.
하지만 저번 문제처럼 '이 문자열에서 벗어나서 별도의 태그로 반영이 되는 것이 안되어 XSS에 실패하였다.
고민 끝에 인터넷에 XSS 페이로드를 검색하여 확인한 결과 javascript:alert(1)를 href에 넣으다면 javascript가 실행된다는 것을 알 수 있었다.
이를 그대로 적용하여 시도하니, 간단하게 풀이할 수 있었다.
'Wargame > XSS GAME' 카테고리의 다른 글
XSS game - Level6 (0) | 2022.02.14 |
---|---|
XSS game - Level4 (0) | 2022.02.12 |
XSS game - Level3 (0) | 2022.02.09 |
XSS game - Level2 (0) | 2022.01.23 |
XSS game - Level1 (0) | 2022.01.22 |
Comment