XSS challenges by yamagata21

빵선🍊·2024년 5월 9일

webhacking

목록 보기
1/1

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

stage #1

분석

t입력 후 Search 버튼을 누르면

입력한 값을 아래에 띄우는 것을 관찰할 수 있습니다.

풀이

어디까지 필터링이 되는지 모르겠으므로 (그리고 스테이지 1이므로)
적당히

<script>alert(document.domain)</script>

을 입력해보았습니다.


통과입니다!


stage #2

분석

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)">

이 되어 입력 박스를 클릭하면 코드가 실행됩니다!


stage #3

분석

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

위와 같이 검색어와 선택한 나라가 표시되는 것을 알 수 있다.

테그를 입력해보면,

이처럼 필터링이 되는 것을 관찰할 수 있다.

풀이

post 요청을 보면,

p1으로는 입력 박스에 넣은 값이,
p2값으론 나라 이름이 들어가는 것을 볼 수 있다.

임의의 값으로 p2를 수정할 시에 다음과 같이

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


이상입니다!


stage #4

분석

스테이지 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>
을 넣어보겠습니다.

그러면 코드가 이와 같이

조작되어!

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


stage #5

분석

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

이와처럼 입력값이 그대로 남아있는 모습을 볼 수 있습니다.

풀이

여기다가

" onclick= "java
중간에 잘리기에 보니까

<input type="text" name="p1" maxlength="15" size="30" value="test">

maxlength가 15로 제한되어있었습니다.
maxlength를 지우고 다시 입력한 이후,

입력 박스를 클릭해주면 코드가 실행됩니다!


stage #6

분석

이전 문제와 닮아있습니다.

풀이

" onclick= "javascript:alert(document.domain)

이전에 쓴 코드를 한번 더 써보겠습니다.

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


stage #7

분석

이번엔 test말고 바로 코드를 입력해보겠습니다.

" onclick= "javascript:alert(document.domain)

뭔가 됐는데 다릅니다. html 코드를 보면,

<input type="text" name="p1" size="50" value="&quot;" onclick="&quot;javascript:alert(document.domain)">

몇몇 특수문자들이 바뀐 것을 볼 수 있습니다.
그런데 뭔가 특이합니다.

<input type="text" name="p1" size="50" value="&quot; onclick=&quot;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)">

가 되어 원하는 코드를 실행할 수 있습니다.


stage #8

분석

해당 링크의 코드는,

<a href="test">test</a>

입니다.

풀이

지금껏 써온
javascript:alert(document.domain)
을 사용하면 href에 바로 저 값이 들어가므로??

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


profile
bbang_ssn

0개의 댓글