관리 메뉴

HeeJ's

[level5] Breaking protocol :: XSS game 본문

<CTF>/<XSS game>

[level5] Breaking protocol :: XSS game

meow00 2021. 5. 18. 19:21

문제 설명

DOM에 스크립트를 삽입하지 않고 문제를 풀어야 한다고 한다.

DOM이란 무엇일까?

더보기

Document Object Model

웹 페이지(HTML)에 대한 인터페이스 

1. 뷰 포트에 무엇을 렌더링 할 지 결정하기 위해 사용

2. 페이지의 콘텐츠 및 구조, 그리고 스타일이 자바 스크립트 프로그램에 의해 수정되기 위해 사용

원본 HTML 문서 형태와 비슷하지만 몇 가지 차이점이 있다.

- 항상 유효한 HTML 형식이다

- 자바 스크립트에 수정될 수 있는 동적 모델이어야 한다.

- 가상 요소를 포함하지 않는다.(ex. ::after)

- 보이지 않는 요소를 포함한다.(ex. display : none)

문제 화면

signup 링크를 클릭하게 되면 ?next=confirm이라는 요청과 함께 다른 페이지로 넘어가게 된다.

next 변수가 어떤 것인지 확인해보기 위해 소스 코드를 확인해 보았다.

 

if문으로 분기를 가지는 것 같은데 이 코드를 보면

1. next 값에 signup이 포함되면 signup.html로 이동

2. confirm이 포함되면 confirm.html로 이동

3. 이외의 값일 경우 welcome.html로 이동

 

이렇게 볼 수 있다.

 

next에 그냥alert문을 넣게 되면 3번으로 분기하게 되어

welcome.html으로 이동하게 되는 것 같다.

 

signup.html의 코드 중 일부분인데,

welcome.html에는 next에 대한 제약이 너무 많은 것 같아 signup으로 이동한 후, next라는 값에 aler를 넣어주려고 한다.

 

signup으로 이동한 후 next에 alert를 넣어주었다.

그리고 go 버튼이 아닌 Next 버튼을 눌러주면

 

alert 창이 뜨게 된다.