xss-game level 3에 들어가면 보이는 설명입니다.
위 내용은
1. Your Target 속 url 창에 JavaScript를 넣어
2. Your Target 창 안에 경고창을 띄우면
3. 다음 단계로 넘어갈 수 있다
라고 정리할 수 있습니다.
Your Target 창 안에 입력할 수 있는 텍스트박스가 아닌, 누를 수 있는 버튼 세 개가 있습니다.
버튼을 누르면 생기는 변화를 알아보기 위해, 버튼을 하나 하나 눌러보면...
화면 속 이미지와, url창 속 /frame#1 부분의 숫자가 바뀝니다.
이미지를 불러오는 코드도 검사(F12 - 요소)를 통해 찾아봤습니다.
위는 Image 3 버튼을 눌렀을 때의 코드입니다. Image 1 버튼을 다시 누르면, img가 불러오는 경로가 /static/level3/cloud1.jpg 로 바뀌는 것을 확인할 수 있습니다.
버튼을 누를 때의 변화를 정리해봅시다!
1. url창을 통해 숫자(1~3)를 전달하면
2. img태그가 같은 경로의 cloudN(N:전달받은 숫자).jpg를 불러오고
3. 해당 이미지가 화면에 띄워진다
위 변화를 바탕으로,
1~3이 아닌 숫자를 url로 전달하고
img 태그의 onerror로 alert() 창을 띄울 수 있도록 처리를 해준다면
Your Target 창에 경고창이 뜬다 라고 추측할 수 있습니다.
우선, 1~3이 아닌 숫자를 url로 전달했을 때, 이미지 불러오기에 실패하는 지 확인해봐야 합니다.
잘 실패한다는 것이 확인되었습니다. 이제 이미지 불러오기에 실패한 것을 에러로 받아들인 후, onerror를 실행시킬 img태그를 만들면 됩니다.
onerror이 들어있는 img 태그는
<img src="/static/level3/cloud4.jpg" onerror="alert('...')">
// onerror 속성값을 감싸는 따옴표와 alert() 안 따옴표가 같아지지 않도록 주의
로 만들 수 있습니다.
현재, <img src="/static/level3/cloud3.jpg"> 부분 (cloud 뒤)3 위치에 값을 넣어서 위 태그와 똑같이 만들어야 하기 때문에 url 창에 입력할 값은
4.jpg' onerror="alert('...')">
가 되겠지요.
입력하고 나면 뒤에 .jpg"가 따로 놀겠지만, 중요한 건 아닙니다.
// 여기서 주의해야할 점은 .jpg 다음에 "가 아니라 '를 써야한다는 것입니다. "를 쓰면 " onerror="을 하나로 인식하는지 원하는 결과값이 안 나옵니다.
한 번 입력 해보면?
성공입니다.
'XSSgame' 카테고리의 다른 글
XSS-game level 2 (0) | 2023.01.24 |
---|---|
XSS-game level 1 (0) | 2023.01.24 |