이번 문제는 onclick 이벤트에서 태그(<,>)와 더블쿼터(")는 HTML인코딩이 되어 있고 싱글쿼터(')와 백슬래쉬(\)는 이스케이프 처리가 되어 있다.
우선 onclick 이벤트가 어디 있는지 찾아야 한다.
찾아보니 각 게시물에 댓글 기능에서 댓글 작성 시 작성자 id를 누르면 등록된 웹사이트로 이동되는 onclick 이벤트가 존재한다.
더블쿼터(")와 태그(<,>)는 작동을 안 하고 싱글쿼터(')와 백슬래쉬(\)는 이스케이프 처리 된 걸 확인할 수 있다.
id를 누를 시 onclick으로 인해 tracker함수가 실행되고 웹사이트 주소에 입력한 주소값이 호출되게 된다.
그럼 임의 주소를 입력(www.naver.com)을 입력하고 뒤에 alert함수를 입력하여 회출하면 될 것 같다.
그러려면 싱글쿼터(')를 해결해야 되는데 이는 간단하게 해결할 수 있다.
HTML 엔티티를 사용하면 되는데
HTML 엔티티란?
HTML 안에서 특수문자를 쓰기 위해 사용하는 예약어이다.
예를 들어 "안녕하세요 저는 <p> 태그 라고 합니다"라는 문장을 출력하고 싶은데
html에서는 문장 안에 <p>를 태그로 인식해 오류가 나는 것이다.
이를 방지하기 위해 엔티티를 사용한다. (특수문자를 문자열로 인식)
위 사진에 나타나있는 게 자주 쓰이는 HTML엔티티다. (싱글쿼터는 ')
이를 이용하여 웹사이트에 https: www.naver.com'+alert(0)+'를 입력해 주면
alert함수가 호출되는 걸 확인할 수 있다.