모든 스테이지의 목적은
javascript 코드인 alert(document.domain)를 실행시키는 것입니다.

t입력 후 Search 버튼을 누르면

입력한 값을 아래에 띄우는 것을 관찰할 수 있습니다.
어디까지 필터링이 되는지 모르겠으므로 (그리고 스테이지 1이므로)
적당히
<script>alert(document.domain)</script>
을 입력해보았습니다.

통과입니다!

test를 입력하고 Search 버튼을 눌러보겠습니다.

입력한 값이 입력 박스에 그대로 남아있는 것을 볼 수 있습니다.
html코드를 보면
<input type="text" name="p1" size="50" value="test">
하고 입력한 값이 그대로 남아있는 것을 볼 수 있습니다.
필터링이 없다고 생각해보면,
" onclick= "javascript:alert(document.domain)
을 입력했을 때
<input type="text" name="p1" size="50" value="" onclik="javascript:alert(document.domain)">
이 되어 입력 박스를 클릭하면 코드가 실행됩니다!


입력 박스에 값을 집어넣으면,

위와 같이 검색어와 선택한 나라가 표시되는 것을 알 수 있다.
테그를 입력해보면,

이처럼 필터링이 되는 것을 관찰할 수 있다.
post 요청을 보면,

p1으로는 입력 박스에 넣은 값이,
p2값으론 나라 이름이 들어가는 것을 볼 수 있다.
임의의 값으로 p2를 수정할 시에 다음과 같이

표시되는 것을 관찰할 수 있다.
p2에 적절한 스크립트를 입력해주면


이상입니다!

스테이지 3과 닮은 페이지입니다.

임의로 country 값을 바꿔도 표시가 되군요.

그러나 이전과 같은 방법은 필터링때문에 어려울 것 같습니다.

f12로 코드를 보니 p1 p2에 이어 p3가 있는 것을 볼 수 있습니다!

post 요청을 확인해보면 p3값도 같이 넘어가는 것을 확인할 수 있습니다.
p3로 어떤 것이 가능할지 찔러보겠습니다.
p3의 값을 test로 변경한 후 Search 버튼을 누르면,
<input type="hidden" name="p3" value="test">
화면상에는 보이지 않지만 코드상에는 해당 입력 박스(그러나 숨겨진!)의 value에 들어감을 확인할 수 있습니다.
p3의 값에
"><script>alert(document.domain)</script>
을 넣어보겠습니다.
그러면 코드가 이와 같이

조작되어!

정답임을 확인할 수 있습니다.

이쯤되면 따분한 화면입니다.
test를 입력하고 검색하니

이와처럼 입력값이 그대로 남아있는 모습을 볼 수 있습니다.
여기다가
" onclick= "java
중간에 잘리기에 보니까
<input type="text" name="p1" maxlength="15" size="30" value="test">
maxlength가 15로 제한되어있었습니다.
maxlength를 지우고 다시 입력한 이후,
입력 박스를 클릭해주면 코드가 실행됩니다!


이전 문제와 닮아있습니다.
" onclick= "javascript:alert(document.domain)
이전에 쓴 코드를 한번 더 써보겠습니다.

어 됐다.
아무래도 이전 문제에 요구했던 정답은 브라켓을 닫고, 스크립트 테그를 여는 것이었나보다.

이번엔 test말고 바로 코드를 입력해보겠습니다.
" onclick= "javascript:alert(document.domain)
뭔가 됐는데 다릅니다. html 코드를 보면,
<input type="text" name="p1" size="50" value=""" onclick=""javascript:alert(document.domain)">
몇몇 특수문자들이 바뀐 것을 볼 수 있습니다.
그런데 뭔가 특이합니다.
왜
<input type="text" name="p1" size="50" value="" onclick="javascript:alert(document.domain)">
가 아니라, 저렇게 된거지?
하면서 여러 테스트를 해보니,
test test
입력시,
<input type="text" name="p1" size="50" value="test" test="">
이렇게 됩니다. 이상해... 참 이상해.
test onclick=javascript:alert(document.domain)
이렇게 입력하니 알아서 뒷부분을 속성으로 해석해 따옴표를 붙여,
<input type="text" name="p1" size="50" value="test" onclick="javascript:alert(document.domain)">
가 되어 원하는 코드를 실행할 수 있습니다.


해당 링크의 코드는,
<a href="test">test</a>
입니다.
지금껏 써온
javascript:alert(document.domain)
을 사용하면 href에 바로 저 값이 들어가므로??

링크를 클릭할 시 정답이 됩니다!