![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqf6ef%2Fbtq8cQidd5V%2FQD4dHpz2drZl1sMXRjfkHk%2Fimg.png)
https://xss-quiz.int21h.jp/stage__15.php?sid=1fbd3663a6f332b4b05bcb0db0905de919c4b97e Hint: document.write(); document.write 부분에 test를 입력해보았다. 검은 부분에 test가 출력된 모습을 볼 수 있다. 를 입력하고 소스코드를 살펴보았다. 가 필터링 된다는 것을 알 수 있다. document.write에서는 \x3c, \x3e를 각각 로 인식한다. 따라서 를 대체해 아래와 같이 입력했다. \\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e Clear!
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGmAXw%2Fbtq8c0ZUQZq%2FLt1hjv4GFoadmgYc8AHIW0%2Fimg.png)
id가 admin이면 풀리는 문제고, pw를 입력받게 되어 있다. id가 'guest'로 되어 있고, 거짓인 명제(1=0)가 and로 엮여 있다. pw=1' or id='admin' %23 위와 같이 쿼리문을 작성하여, id를 admin으로 설정해주고 뒤에 있는 거짓 명제를 #으로 주석 처리 하면 쉽게 해결할 수 있다. Clear!
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYVFuL%2Fbtq8bsa1By8%2FfBkf4mL9yPOOQu6dy53viK%2Fimg.png)
id가 admin이면 풀리는 문제다. 넘겨 받은 값을 strtolower 함수를 통해 소문자로 변환하고, str_replace 함수를 통해 'admin'을 공백("")으로 바꾼다. 즉, 'admin'이 공백으로 치환된 뒤에도 id에 'admin'이 남아있으면 해결된다. 그래서 id=adadminmin을 입력해보았다. Clear!
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5WB36%2Fbtq8a0shSSS%2FKfGytOQkBAYyB8jXlvkb50%2Fimg.png)
id가 admin이면 풀리는 문제다. 싱글쿼터와 'admin'이 필터링 되는데, 'admin'을 필터링하는 preg_match 문을 보면 i가 없기 때문에 소문자 'admin'만 필터링된다. 즉, 'admin'을 'Admin'으로 쓰는 등의 방법으로 필터링을 우회할 수 있다. id=Admin 을 입력해 문제를 해결했다. Clear!