해당 LAB은 꺽쇠 기호(<,>), 더블 쿼터(")를 HTML 인코딩하고, 싱글 쿼터(')를 이스케이핑 처리한 검색 추적 기능에 XSS 취약점이 존재한다. 해당 LAB을 해결하기 위해선 JS 코드에서 XSS 취약점을 찾아내 alert() 함수를 호출해라.
우선 꺽쇠 기호, 더블, 싱글 쿼터를 입력해 보겠습니다.
- 꺽쇠 기호
<,>-><,&qt
- 더블 쿼터
"->"
- 싱글 쿼터
'->\'
싱글쿼터는 HTML 인코딩이 되지 않고 단순히 백 슬래시를 덧붙이는 방식으로 이스케이핑 처리를 한 상태입니다.
이 점을 이용하기 위해 백 슬래시도 입력해보겠습니다.

\ -> \
HTML에서는 이스케이핑 처리가 되지만, JS 코드에서는 그대로 출력되고 있습니다.
현재 상황을 정리해보면,
싱글 쿼터 이스케이핑 수행.
'->\'
반면, 백 슬래시는 이스케이핑 처리가 되지 않습니다.
\->\
따라서, 이 둘을 함께 사용하면
\'->\\'
로 입력이 되는데, JS에서 \\는 백 슬래시를 이스케이핑 한 것과 마찬가지이기 때문에 \\는 일반 문자열로 입력이되고, 이스케이핑 되었던 싱글쿼터는 '로 백 슬래시가 사라지면서 이스케이핑이 해제가 됩니다.
결국 이번 LAB은 싱글쿼터만 이스케이핑 처리하고, 백 슬래시는 이스케이핑 처리를 하지 않아 취약점이 발생하게된 것으로 볼 수 있습니다.
\'+alert(1)를 입력해봅니다.

alert() 함수가 실행되지 않습니다.

왜냐하면 뒤에 '; 가 남아있어 에러를 출력하기 때문입니다. 그래서 뒤에를 전부 주석처리하기 위해 //를 붙여 입력해줍니다.
\'+alert(1)//


참고로 JS에서는 자동 세미콜론 삽입(ASI) 기능이 있기 때문에 세미콜론을 안붙여도 에러가 나지 않습니다.
끝