-
XSS - Reflected(AJAX/JSON)
XSS - Reflected(AJAX/JSON)
-
iFrame Injection
iFrame Injection
-
XSS - Reflected(AJAX/XML)
XSS - Reflected(AJAX/XML)
-
XSS game - Level 3
XSS game - Level 3
-
SSI (Server Side Includes) Injection
SSI (Server Side Includes) Injection
지금까지 쓴 글
-
XSS game - Level 6
XSS game - Level 6
2020.08.02Level 6 시작! 입력창은 따로 없고 # 를 통해 어떤 값을 받고 있는 것 같다. # 값을 바꾸니 위와 같이 값이 그대로 출력되는 것을 확인했다. 소스코드를 보자. 44 번쨰 줄의 getGadgetName() 이라는 함수를 보면 # 을 통해 값을 반환해주는 것을 볼 수 있다. 그리고 나서 이 값을 includeGadget 의 인자로 넣어주고 있다. 18 번째 줄에서 scriptEI 라는 변수에 script 태그를 만들어준다. 21 번째 줄부터는 includeGadget() 이라는 함수를 보면 url 에 주소와 관련된 문자들을 필터링한다. 28 번째 줄이 이 문제의 핵심이다. scriptEI 의 src 로 # 로 받은 값을 넣어준다. 그 결과, 아래와 같은 스크립트 문이 만들어지게 된다. script ..
-
XSS game - Level 5
XSS game - Level 5
2020.07.27Level 5 시작! 별다른 입력값 없이 Sign up 링크만 있다. Sign up 을 누르면 email 을 입력하는 signup.html 로 이동한다. Next 를 누르면 또 다른 페이지로 이동하고 url 를 보면 next 인자를 통해 어떤 값을 전달하는 것을 알 수 있다. 이메일에 아무 값이나 입력하고 Next 버튼을 누르면 위의 페이지가 뜨고 몇 초 뒤에 첫 페이지로 이동한다. 이메일로 입력한 값은 따로 출력되지 않고 있다. 소스코드를 보자. 이메일을 입력하는 signup.html 의 소스코드를 보면 Next 를 눌렀을 때 next 인자의 값을 가진 링크로 이동하는 것을 알 수 있다. confirm.html 의 소스코드를 보니 email 값은 전달되지 않고 있다. 때문에 url 에서 입력할 수 있는..
-
XSS game - Level 4
XSS game - Level 4
2020.07.27Level 4 시작! 입력창이 있고 Create timer 버튼을 누르게 되면 입력한 시간만큼 대기하다가 팝업창이 뜨게 된다. 위의 화면처럼 입력값인 3 이 출력되는 것을 볼 수 있다. 소스코드를 보자. 첫 번째 페이지에서 입력한 값은 timer 라는 name 으로 두 번째 페이지에 전달되고 있다. 두 번째 페이지의 소스코드를 보면 입력값인 timer 는 startTimer() 함수의 인자로 들어가는 것을 확인할 수 있다. onload 옵션에서 startTimer() 함수를 끝내고 alert() 를 수행하면 되지 않을까 생각하여 값을 입력해보았다. 입력값 : ');alert(1);(' 적용되는 onload 옵션 : onload="startTimer('');alert(1);('');" 성공!!
-
XSS game - Level 3
XSS game - Level 3
2020.07.27Level 3 시작! Image 버튼을 누르면 해당 번호의 이미지로 바뀌게 된다. 소스코드를 보며 어떻게 구성되었는지 보자. 각각의 버튼은 클릭 시 chooseTab() 함수로 값을 보낸다. 그리고 tabContent 라는 id 를 통해 이미지 출력을 처리하는 것 같다. chooseTab() 을 통해 전달된 num 를 통해 html 변수에 num.jpg 를 넣어주고 있다. 그리고 이 html 을 tabContent 를 통해 화면에 출력해준다. num 의 값을 통해 결과가 출력되는 것은 알았다. 그렇다면 num 라는 값에 어떻게 원하는 값을 넣어줄지를 찾아야 된다. chooseTab() 을 호출하는 곳을 찾아보자. self.location.hash.substr(1) 은 url 의 # 부분에 있는 값을 가져..
-
XSS game - Level 2
XSS game - Level 2
2020.07.26Level 2 시작! 입력창이 하나 보인다. 입력값이 어떻게 처리되는지 소스코드를 확인해보자. textarea 로 받은 입력값은 post-content 라는 id 값으로 전달되어 save() 함수의 인자로 들어간다. post-store.js 의 소스코드를 보니 save() 로 전달된 값은 getPosts() 를 통해 가져올 수 있다. 위와 같이 getPosts() 로 가져온 값은 태그 안에 들어가게 된다. 이제 값을 입력해보자. 태그를 입력했을 때, 위와 같이 필터링되어 출력되지 않고 있다. 태그로 XSS 를 시도해보자. 입력값 : 태그는 필터링하지 않았다. 때문에 onerror 를 통해 팝업창을 띄워 문제를 해결할 수 있었다. 성공!