Level 03
URL을 이용해 풀이해야 하는 문제이다.
각 image를 눌러본 결과, URL의 #뒤에 숫자가 바뀌는 것을 볼 수 있었다.
소스코드를 보면 변수 html에 <img src='/static/level3/cloud" + num + ".jpg' />의 이미지 태그가 들어가있다.
image가 3까지 밖에 없기 때문에 #뒤의 숫자를 1, 2, 3이 아닌 숫자로 바꿔줄 경우 아무 그림도 뜨지 않는다.
level 2에서처럼 잘못된 이미지 경로를 넣어주고 onerror을 실행시켜보기로 하였다.
onerror="alert('error');"를 입력해주었다.
다음과 같은 창이 뜨며 다음단계로 넘어갈 수 있었다.
+) 사실 굳이 1, 2, 3이 아닌 수를 넣을 필요가 없었다. onerror 코드를 넣어주는 것만으로도 잘못된 이미지 경로를 주는 것과 마찬가지였다.
Level 04
먼저 프로그램이 어떤식으로 작동하는 지 확인해보았다.
입력 칸에 3이라 쓰고 Create timer이라는 버튼을 눌렀을 때 URL에 ?timer=3가 추가되며 3초 타이머가 만들어졌다.
타이머가 종료됨과 동시에 Time is up!이라는 문구의 창이 떴다.
힌트 1에서 알려준 것 처럼 startTimer가 어디서 쓰이는 지 소스코드에서 확인해보았다.
startTimer은 onload속성에 의해 호출되고 있었다.
onload는 이미지가 로드된 직후에 실행된다.
https://xss-game.appspot.com/level4/frame?timer=('{{timer}}');의 형태로 전달되기 때문에 {{timer}}부분에 alert창을 띄우도록 해야한다.
');alert('error 라고 작성해주어 timer 뒷부분에 alert창이 들어가도록 하였다.
하지만 실행되지 않았다.
검색해 본 결과 힌트2에서 말하는 것처럼 세미콜론을 인코딩해서 넣어야 했던 것이다.
세미콜론을 인코딩하면 %3B가 나왔다.
세미콜론을 대신해 %3B를 넣어주었다.
실행해보았더니 %3B가 세미콜론으로 변하였고 다음과 같은 창이 떴다.
'Web Hacking > WEB Hacking 기초' 카테고리의 다른 글
[SISS] 웹 프로젝트 5주차 (0) | 2022.01.26 |
---|---|
[SISS] XSS Game 05, 06 (0) | 2022.01.22 |
[SISS] 생활코딩 DATABASE-MySQL 정리 (0) | 2022.01.08 |
[SISS] XSS Game 01, 02 (0) | 2022.01.03 |
[SISS] XSS 공부 (0) | 2021.12.31 |