일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝
- lob
- 파이썬
- 백준
- Python
- WarGame
- 생활코딩
- 풀이
- 숙명여자대학교 정보보안 동아리
- XSS Game
- Sookmyung Information Security Study
- PHP 웹페이지 만들기
- HTML
- siss
- hackctf
- 드림핵
- BOJ
- The Loard of BOF
- c
- 자료구조 복습
- 기계학습
- BOJ Python
- c++
- 숙명여자대학교 정보보안동아리
- SWEA
- CSS
- C언어
- 웹페이지 만들기
- hackerrank
- Javascript
- Today
- Total
목록2021 SISS 21기 활동/겨울방학 XSS (7)
혜랑's STORY
다른 문제들과 다르게 입력창이 따로 없고 # 뒤에 입력하는 값을 출력하고 있는 것 같다. # 뒤에 1234를 넣어 확인해보자 화면에 1234가 출력되고 있는 것을 볼 수 있다. 소스코드를 확인해 보자. 소스 코드를 살펴보니 URL에서 # 뒤의 값을 가져와 url 변수에 저장하고, url 변수에서 'https://'와 같은 형태가 있을 경우 "Sorry, cannot load a URL containing" 문구를 출력하고 아닐경우 해당 url에 있는 코드를 자바스크립트로 실행하는 것 같다. 힌트를 살펴보자. "google.com/jsapi?callback=foo"에서 callback의 값으로 alert을 전달해주면 될 것같다. 그러나 'https://'와 같은 형태는 검사를 하고 있기 때문에 'Https..
DOM에 스크립트를 삽입하지 않고 XSS를 공격하는 문제이다. 일단 Sign up을 눌러 보았다. URL 파라미터로 next의 값에 confirm을 전달하고 있다는 것을 알 수 있었다. 일단 쓰레기 값을 넣어준 뒤, Next를 눌러보자. 잠시 다음과 같은 화면에 머물렀다가 처음 화면에 Welcome! ... 과 같은 문장이 삽입되어 있는 것을 볼 수 있다. 코드를 살펴보자. 코드를 확인해보니 Next 버튼이 링크 태그인 것을 확인할 수 있었다. 또한 링크의 주소가 next 변수의 값으로 전달되고 있었다. 따라서 next의 값으로 "javascript:alert("");"을 전달하고 Next 버튼을 누르면 성공이다.
일단 Create timer를 눌러 보았더니 다음과 같은 결과가 나왔다. 코드를 살펴본 결과 onload를 이용해 startTimer 함수를 실행시키고 있다. (startTimer 함수란, 자바스크립트에서 제공하는 타이머 함수이다.) 따라서 startTimer 함수 뒤에 이어서 alert 함수를 실행시키면 된다고 생각하였다. 3'); alert(''); (' -> 코드에서 괄호와 '의 짝을 맞춰주기 위해 저러한 입력을 실행 함. 결과는 성공이다.
- 문제 - 풀이 이전 문제들과 다르게 level 3은 응용 프로그램에서 페이로드(payload)를 입력할 수 없었다. 따라서 URL 표시줄에서 주소를 수동으로 편집해야 하는데 일단 주소가 어떤식으로 이루어지는지 알아보기 위하여 다른 이미지 사진들로 변경한 뒤, 주소의 변화를 알아보기로 하였다. "Image _" 버튼을 눌러 각 번호에 맞는 이미지를 보이도록 하였다. 주소를 살펴보니 다음과 같은 변화를 보였다. Image 1 클릭 -> /frame#1 Image 2 클릭 -> /frame#2 Image 3 클릭 -> /frame#3 즉, frame#____의 형식으로 내가 원하는 공격을 실행할 수 있을 것 같다. 더 자세히 알아보기 위하여 코드를 살펴보자. 코드를 살펴본 결과 html += 의 형식으로 ..
#XSS Game 02 문제 #XSS Game 02 문제 풀이 먼저, Level 01에서 했던 방식대로 결과를 확인해보니 아무일도 일어나지 않았다. 다른 방법으로 링크 태그로 자바스크립트를 실행해보았다. link tage 결과는 다음과 같다. 링크가 메세지에 잘 들어가 있었고, 링크를 눌러보니 공격에 성공했다는 메시지를 얻을 수 있었다. 문제는 해결하였지만 힌트에서는 이벤트 속성 중 "onerror"를 사용하라는 것을 확인하였고 문제에서 주어진 힌트를 활용하여 문제를 풀어보도록 하자. img 태그를 사용할 때, scr의 경로가 해당 파일에 없을 때 에러를 낼 수 있는데 이를 이용하여 onerror를 유발하는 방법이다.
# XSS Game 01 문제 # XSS Game 01 문제 풀이 먼저, Target code를 살펴보자. 코드를 살펴보니 XSS 필터를 비활성화 해 놓은 것을 볼 수 있다. 실제로 사용자 입력이 그대로 출력되는지 알아보기 위하여 임의의 HTML 코드를 삽입해 보았다. Hello 을 입력하자 아래와 같이 URL에 똑같이 출력되어 나오고 Hello가 출력되는 것을 확인할 수 있었다. 따라서 이번 문제를 해결하기 위해 서버에서 사용자의 입력값을 필터링하지 않는다는 것을 이용하기로 하였다. 미션이었던 자바스크립트 alert()을 삽입하기 위하여 를 입력해주었고, 아래와 같이 성공하였다는 메시지를 얻을 수 있었다.
1. XSS(Cross-site-Scripting) 공격이란? 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나, 주로 사용자의 정보(GET, POST, COOKIE, SESSION 등)를 탈취하기 위하여 특수 문자나 예약어, 스크립트를 나타내는 (, ), !, @, {, }, \n, \t, \0, ', ", >, 스크립트 태그로 자바스크립트를 실행 예제 설명 -> 스크립트 태그의 스크립트를 실행시킨다. 브라우저단에서 필터링 해주는 경우도 있으나 아래와 같이 예외 코드도 있다. 2) 자바스크립트 태그 방법 -> 링크 태그로..