3달차 1주차 과제는 다음 3가지와 같다.
- XSS 내용정리
- XSS : CTF 문제 취약점 찾기 (alert 1 띄우기)
- 웹 개발
1번 복습 내용은 "스터디 정리" 카테고리에 기록해두었다.
따라서 2번 과제부터 정리하였다.
1. SQL Injection : CTF문제 풀기
[XSS1 : Stored]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 → 공지사항 → 글쓰기
| (1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다. |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
 |
| ○ 제목 부분은 입력한 문자가 그대로 출력되지만, 내용 부분은 HTML Entity로 치환되고 있다. |
| ● ∴ 제목부분에 XSS를 시도하였다. |
| (4) 제목 부분에 스크립트 입력 |
|---|
 |
| (5) XSS 공격 확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
[XSS2 : Reflected]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 → 공지사항 → 글쓰기
| (1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다. |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
 |
| ○ 제목과 내용 부분 모두 HTML Entity 로 치환이 되고 있다. |
| ● 따라서, 현재 페이지에서는 XSS가 불가능하다. |
2) 로그인 → 공지사항 → 검색
| (1) 글 목록 페이지에서 다음과 같이 입력한 후, 검색 버튼을 눌러보았다. |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) POST방식을 GET방식으로 바꾸어, 요청 가능한지 확인 |
|---|
 |
| ○ 기존 POST방식으로 되어있는 것을, URL 전달이 가능하도록 하기위해 GET방식으로 바꾸어 요청/응답이 가능한것을 확인하였다. |
| (4) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
| ○ <, > 두 문자가 HTML Entity로 치환되고 있어, 사용할 수 없다. |
| ● 그러나 이미 script 태그 안에 데이터가 출력되고 있으므로, SQL Injection 때처럼 형식을 맞춰 스크립트를 작성해주었다. |
| (5) Repeater를 통해, 검색 부분에 스크립트 입력 |
|---|
 |
| (5) XSS 공격 확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
[XSS3 : Reflected]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 → 마이페이지
| (1) 로그인할 때 입력한 아이디가 페이지에 그대로 나타나고 있다 |
|---|
 |
| (2) Repeater에서 값을 변경하여도 서버 응답 값에 데이터가 그대로 포함되어 출력되는 것을 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
| (4) 파라미터 부분에 스크립트 입력 |
|---|
 |
| (5) XSS 공격 확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
[XSS4 : Stored]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 → 공지사항 → 글쓰기
| (1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다. |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
 |
| (4) 제목 부분에 스크립트 입력 |
|---|
 |
| (5) XSS 공격 확인 |
|---|
 |
| ○ 응답값에 script와 alert 글자가 없는 것을 보아 필터링되어있다고 생각해볼 수 있다. |
| ● 따라서 두 단어의 필터링을 우회하도록 하였다. |
| (6) 필터링 우회 |
|---|
 |
| ○ script 태그는 대소문자 혼용으로 필터링 우회 |
| ● alert 태그는 단어가 필터링되며 alert가 합쳐지도록 필터링 우회 |
| (7) XSS 공격 재확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
[XSS5 : Stored]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 → 공지사항 → 글쓰기
| (1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다. |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
 |
| ○ < 와 > 두 문자가 HTML Entity로 치환되고 있다. |
| ● notice_update.php 에서 자바스크립트를 통해 치환을 하고 있었고, 따라서 스크립트를 조작해 우회하고자 한다. |
| (4) notice_update.php 에서 Intercept 후, 자바스크립트 조작 |
|---|
 |
| ○ HTML Entity 값으로 치환하도록 작성된 것을 무시하도록 재작성 |
| (5) 스크립트 재작성 |
|---|
 |
| ○ 내용 입력칸에 POC 코드 작성 |
| (6) XSS 공격 확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
[XSS6 : Reflected]
| 주어진 문제는 다음과 같다. |
|---|
 |
1) 로그인 페이지
| (1) 로그인 페이지에서 없는 아이디 입력 |
|---|
 |
| (2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인 |
|---|
 |
| (3) GET 방식으로 전달방식 변경 후, 요청/응답이 유효한지 확인 |
|---|
 |
| ○ XSS 포인트 확인 |
| (3) < ' " > 4개의 문자가 사용가능한지 확인 |
|---|
 |
 |
| ● 이미 script 태그 안에 데이터가 출력되고 있으므로, SQL Injection 때처럼 형식을 맞춰 스크립트를 작성해주면 된다. |
| (4) id 값에 스크립트를 포함하여 입력 |
|---|
 |
| (5) XSS 공격 확인 |
|---|
 |
 |
| ○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습 |
| ● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다. |
이렇게 두번째 과제인 'CTF 문제 풀기' 과제가 완료되었다.