Portswigger-Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped
풀이
검색 쿼리 추적 기능에 XSS 취약점이 있다. <> 와 \ 문자는 HTML 인코딩되고, \ 문자는 이스케이프된다. XSS로 alert을 띄워라.

접속하면 검색 창이 있다.

검색한 값은 h1 태그의 텍스트값으로 반사된다. 또한 script 태그로 감싸진 곳에 javascript 문자열로 하드코딩된다. 그리고 img 태그의 src 값에도 반사된다. img 태그는 이 javascript 코드를 통해 생성되었다. URL 인코딩되어 들어가므로 이 코드를 이용해 악의적인 img 태그를 생성하기는 어렵다.
검색값은 search라는 이름의 URL 쿼리로 들어간다.

';alert(1);// 페이로드를 입력하면 될 것 같지만, \ 문자가 이스케이프되어 XSS 되지 않는다.

\';alert(1);// 로 백슬래시를 추가해 프로그램이 추가하는 백슬래시를 이스케이프하면 성공한다. 이 취약점은 사용자가 입력한 값을 충분히 검증하지 않고 반사하여 발생하였다. \ 문자는 이스케이프 했지만, 이스케이프에 사용되는 \\ 문자는 이스케이프하지 않아 문제가 발생했다.
tags: writeup, xss, reflected xss, wstg-inpv-01, web hacking