일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PHP 웹페이지 만들기
- lob
- XSS Game
- 파이썬
- The Loard of BOF
- 기계학습
- 웹페이지 만들기
- SWEA
- BOJ
- hackctf
- c++
- Python
- CSS
- 숙명여자대학교 정보보안 동아리
- 자료구조 복습
- 생활코딩
- WarGame
- Javascript
- c
- 숙명여자대학교 정보보안동아리
- 백준
- 머신러닝
- siss
- HTML
- C언어
- 드림핵
- Sookmyung Information Security Study
- 풀이
- BOJ Python
- hackerrank
- Today
- Total
목록XSS Game (5)
혜랑's STORY
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()을 삽입하기 위하여 를 입력해주었고, 아래와 같이 성공하였다는 메시지를 얻을 수 있었다.