Skip to content
This repository was archived by the owner on Apr 25, 2020. It is now read-only.

Commit 28efb02

Browse files
committed
Initialization
0 parents  commit 28efb02

File tree

3 files changed

+351
-0
lines changed

3 files changed

+351
-0
lines changed

1차시 수업자료.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# 1차시 수업자료 초안
2+
3+
## 수업 목표
4+
5+
- 해킹의 분야를 안다.
6+
- 최근 해킹 관련 이슈를 안다.
7+
8+
## 수업 순서
9+
10+
1. 강사 소개
11+
2. 해킹 분야 소개 & 시연
12+
3. 학생들 자기소개
13+
4. 아이스 브레이킹
14+
5. 조편성
15+
6. 수업 계획 소개
16+
17+
18+
19+
## 교육 일정 소개
20+
21+
### 강사 소개
22+
23+
24+
25+
### 해킹분야 소개 & 시연
26+
27+
리버싱, 포너블, 포렌식, 웹해킹을 소개
28+
29+
##### 리버싱
30+
31+
특정한 기능을 내는 [기계](https://namu.wiki/w/%EA%B8%B0%EA%B3%84), 혹은 [프로그램](https://namu.wiki/w/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8)의 [라이브러리](https://namu.wiki/w/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC)를 만들어보고 싶은데 내부 구조를 알 수 없을 때, 뜯어서 아무튼 동일한 기능을 하도록 새로운 것을 만들어 내는 것이다.
32+
33+
##### 포너블
34+
35+
시스템 해킹이란 대상 시스템에 직접 침입하여 행해지는 해킹. 컴퓨터 시스템의 관리자 권한을 획득하여 시스템을 제어하고 해심 정보를 빼오는 시스템 탈취와 정보를 삭제하고 하드웨어를 파괴하는 행위인 시스템 파괴를 포함하는 해킹 유형이다.
36+
37+
##### 포렌식
38+
39+
전자적 증거물 등을 사법기관에 제출하기 위해 데이터를 수집, 분석, 보고서를 작성하는 일련의 작업을 말한다
40+
41+
##### 웹해킹
42+
43+
웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위를 말한다.
44+
45+
### 학생들 자기소개
46+
47+
### 아이스 브레이킹
48+
49+
- 간단한 해킹 관련 퀴즈
50+
- 바다의 왕은? ( 해킹 )
51+
- 이더리움이 4개면? ( 이더넷 )
52+
- 도커 옛날버전을 쓰면? ( 독거노인 )
53+
- 차는 몇바이트일까? ( 1byte => char )
54+
55+
### 조편성
56+
57+
강사 한 명 당 2~3 명의 학생을 담당
58+
59+
### 수업 계획 소개
60+
61+
해킹 관련 이슈 (빗썸 해킹 사건 , intel AMT 관련 보안 문제 등)
62+
악성코드 , 바이러스 , 랜섬웨어 등에 관한 뉴스 설명
63+
어나니머스, 조지 호츠 등 해킹 관련 단체 및 인물, 일화 소개
64+
65+
앞으로 무엇을 배울지 간단한 소개 & 시연
66+
67+
68+

2차시 수업자료.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# 2차시 수업자료 초안
2+
3+
## 수업 목표
4+
5+
- HTML의 구성에 대해 설명할 수 있다.
6+
- HTML의 기본적인 태그들이 무엇인지 안다.
7+
- 웹사이트의 동작원리를 안다.
8+
9+
## 수업 순서
10+
11+
1. 프론트엔드, 백엔드가 뭔지 알기
12+
2. HTML의 기본적 내용 알기
13+
1. HTML의 기본 구성
14+
2. 간단한 태그들 알기
15+
3. 웹사이트 수정해보기
16+
17+
18+
19+
## 교육 일정 소개
20+
21+
### 프론트 엔드, 백엔드
22+
23+
- 프론트와 백엔드가 무엇인가.
24+
25+
> 간단한 서버 클라이언트가 뭔지
26+
27+
### HTML 의 기본적인 내용
28+
29+
- HTML의 기본적인 구성
30+
31+
> 실제 웹사이트의 html코드 확인
32+
>
33+
> > HTML의 구조에 대해 설명
34+
> > 용어 정리하기
35+
36+
- 실제 사이트에 주로 사용되는 줄바꿈 태그, 이미지 삽입 태그, 링크 삽입 태그 등을 설명
37+
38+
- 웹사이트 수정해보기
39+
40+
> 네이버, 구글등을 활용
41+
>
42+
> > 개발자 도구를 이용해서 실제 웹사이트를 뜯어서 수정해봄
43+
44+
45+

README.md

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
# Webhacking 커리쿨럼
2+
3+
## Basic Information
4+
5+
6+
7+
### Member
8+
- 강민범
9+
- 윤석찬
10+
- 이주창 (팀장 : 010-6478-0124 )
11+
- 한종원
12+
13+
### Objectives
14+
- 보안에 대해서 관심과 흥미를 가지도록 함.
15+
- 자기 주도적 학습과 문제해결능력 함양.
16+
- 물어보는 것을 부끄러워하지 않게 함.
17+
- 코딩과 해킹을 같이 배움으로써 코딩 실력도 기르며 해킹도 경험.
18+
- 해커를 지망하는 학생들에게 꿈을 향해 한 걸음 다가갈 수 있도록 도움.
19+
20+
21+
### Etc
22+
  |  
23+
------ | ------
24+
타겟 | 중2 ~ 고3
25+
난이도 | ★★★★★
26+
차시 | 12차시
27+
소요시간 | 3시간
28+
장소 | 안양
29+
교육기자재 | 노트북 또는 PC
30+
31+
## Lesson plan
32+
33+
### Overview
34+
차시 | 한줄소개
35+
------ | ------
36+
1 | 아이스 브레이킹 시간
37+
2 | HTTP 통신 소개
38+
3 | HTML 태그 익히기
39+
4 | DB란?
40+
5 | Mysql 구문, 원리 익히기
41+
6 | 서버란?
42+
7 | PHP 쿠키 로그인
43+
8 | JS란?
44+
9 | JS로 웹페이지 만들기
45+
10 | XSS
46+
11 | SQL Injection
47+
12 | 자체 CTF 진행
48+
49+
### Detail
50+
51+
#### 1차시
52+
- 강사소개 (윤석찬 , 한종원 , 이주창 , 강민범)
53+
- 해킹 분야 소개(리버싱 , 포너블 , 포렌식 , 웹해킹)및 시연
54+
- 학생들 자기소개
55+
- 간단한 퀴즈 및 게임 진행(아이스 브레이킹)
56+
57+
##### 조편성
58+
- 강사 한 명 당 2~3 명의 학생을 담당
59+
60+
##### 수업 계획 소개
61+
- 해킹 관련 이슈 (빗썸 해킹 사건 , intel AMT 관련 보안 문제 등)
62+
- 악성코드 , 바이러스 , 랜섬웨어 등에 관한 뉴스 설명
63+
- 어나니머스, 조지 호츠 등 해킹 관련 단체 및 인물, 일화 소개
64+
65+
#### 2차시
66+
67+
##### 웹페이지의 동작 원리
68+
- 프론트 엔드, 백엔드
69+
- 서버와 클라이언트
70+
71+
##### HTML 이란?
72+
- 실제 사이트(네이버 & 페이스북 등)를 예로 들어 설명
73+
74+
##### HTML 의 기본적인 내용
75+
- 실제 사이트에 주로 사용되는 줄바꿈 태그, 이미지 삽입 태그, 링크 삽입 태그 등을 설명
76+
77+
##### HTML 과 친해지기
78+
- 기존 사이트(네이버 & 페이스북 등)의 HTML 코드를 수정하여 자신의 것으로 만들어보고, 실시간 검색어 바꿔보기
79+
80+
#### 3차시
81+
82+
##### HTML 태그 몇 가지 익히기
83+
- 2차시에 배웠던 태그 및 수평선 태그, 표 삽입 태그, 배경사진 첨부 태그
84+
85+
##### CSS 배워보기
86+
- 배경색 지정해주기, transition 태그및 동적 사이트 제작에 필요한 태그 배워보기
87+
88+
##### HTML 로 간단히 자신의 사이트 만들기
89+
- 단 우리가 제시한 조건(표 삽입, 배경화면 삽입, 메뉴바 생성, 사진 삽입 등)에 부합하는 사이트 만들기
90+
91+
#### 4차시 - DB란?
92+
- DB에 대한 기본적인 개념과 사용 예
93+
- 데이터에 대한 설명을 하고, 데이터의 집합이 데이터베이스라는 것을 알려줌
94+
- 데이터베이스의 특징(실시간 접근, 중복 X 등) 지루하니까 짧고 간단하게
95+
- 데이터베이스의 사용 예시(전화번호부, 기업), 인식은 못하지만 엄청나게 많이 사용되고 있음(필요성)
96+
- DBMS의 개념 - 데이터베이스를 관리하는 시스템
97+
98+
- MySQL 소개(설치는 되어 있음)
99+
- 우리가 사용할 DBMS라는 것을 알려주고, 간단한 MySQL 설명
100+
- Bitnami 실행
101+
102+
- MySQL DB, TABLE 만들기
103+
- DB, TABLE 개념을 그림(행과 열로 이루어진 표)으로 설명하고 강사가 새로운 DB 하나 그려보기(이런 DB에는 어떤 내용이 들어가야 될까요? 물어보는 형식으로 진행)
104+
- 강사가 한대로 각자 만들고 싶은 DB 생각하고, 그 DB에 들어갈 속성 떠올리기(이 때 INT, CHAR, DATE 등 속성 설명하기)
105+
- 각자 설계한 DB를 그림으로 그리고, 명령어를 사용하여 만들고 보기(CREATE, SHOW, DESC)
106+
- 명령어는 대소문자 구분없음
107+
108+
#### 5차시 - Mysql 구문, 원리 익히기
109+
- 이전 시간에 배운 DB, TABLE 만들기 간단하게 복습
110+
111+
- 이전 시간에 만든 DB에 데이터 삽입하고 확인하기(INSERT, SELECT)
112+
- ; 찍기 전까지는 명령어 안끝나니 너무 길어지면 보기 편하게 enter 누르세요
113+
- 한 두번 같이해보고 각자 데이터 쭉쭉 넣어보기(많으면 좋음, 뒤에서 농락할 생각)
114+
115+
- 이번에는 데이터 삭제해보기(DELETE)
116+
- 문제가 발생! 삭제하니까 다 삭제됨
117+
- WHERE의 필요성을 몸소 느낌
118+
119+
- WHERE 설명
120+
- 필요성 설명하기(데이터를 잘못삽입한 경우, 데이터가 너무 많으면 원하는 데이터 보기 보기 힘들음)
121+
- =, <, >, 연산자 설명
122+
- WHERE를 사용하여 조건을 만드는 문제를 몇개 내줌? ex.) 가격이 1000이상인 데이터만 뽑아보세요
123+
- 조건이 '또는', '그리고'로 연결되어 있는 문제가 나옴
124+
- 그리고 AND, OR, NOT 설명하기
125+
- AND, OR, NOT 사용해보기
126+
127+
#### 6차시 - 서버란?
128+
- 서버와 클라이언트, 백엔드 개념 복습하기(2차시에 있음)
129+
- PHP와 필요성에 대한 설명
130+
- 저번에 SELECT와 WHERE로 데이터 뽑아온것을 쉽게 웹페이지에 띄울 수 있음
131+
- 웹문서 하나하나 찾아가면서 내용 수정 안해도 됨
132+
- 반복문, 조건문이라는 것이 있음
133+
134+
- echo를 사용해서 아무거나 출력해보기
135+
- 문자열은 따옴표로 감싸야됨
136+
137+
- PHP에 사용될 변수와 연산자 설명
138+
- 변수는 앞에 &가 붙음 + 변수 생성 규칙(대소문자 구분 등)
139+
- 연산자 +, -, *, % 등 설명하기
140+
141+
- 변수끼리 사칙연산을 해서 출력해보기
142+
143+
#### 7차시
144+
##### PHP 쿠키 로그인
145+
- 쿠키의 개념을 알려줌
146+
- 로그인 원리 알려줌
147+
- 쿠키 로그인 구현
148+
- 로그인을 구현하면서 대략적으로 알고 있을 조건문과 반복문에 대한 개념 확실히 함.
149+
150+
##### PHP Session Login
151+
- HTTP 상에서의 세션의 개념 알려줌.
152+
- 세션 로그인 구현
153+
- 세션 탈취를 이용한 계정 변경 시연을 이용해 세션의 중요성과 원리를 다시 배움.
154+
155+
##### PHP MySQL Connection
156+
- 시간이 여유롭다면 진행할 예정.
157+
- mysqli* 함수를 이용해서 수업 (PDO, mysql 객체는 객체 지향의 개념이 들어가기 때문에 함수로 대체)
158+
- 위의 과정에서 만든 로그인 코드에 약간의 코드를 더하여 완성
159+
160+
#### 8차시
161+
##### Javascript의 개념 및 배경 지식
162+
- Javascript의 개념 및 사용되는 이유
163+
- Naver, Facebook 등 유명한 사이트의 Javascript의 소스 코드를 보여주며, Browser 상에서(Client Side에서) 유용하기 때문에 많이 사용한다고 설명할 예정임
164+
- Javascript의 기본 문법
165+
- Chrome 등의 Browser 상에 내장된 Javascript Console로 수업 진행 (IE는 불편하기 때문에 수업에서 배제할 계획임)
166+
167+
##### 필수적으로 가르쳐야할 내용
168+
- DOM (Document Object Model)에 대해서 설명.
169+
- document.cookie
170+
- document.domain
171+
- document.getElementById()
172+
- etc.
173+
- Location 객체에 대해 설명
174+
- location.href (이것을 통해 Cookie 및 Session 값을 빼앗기 때문임.)
175+
176+
##### Javascript 함수 둘러보기
177+
- 웹 페이지에서 많이 사용하는 함수 위주로 교육 에정
178+
- alert, confirm, prompt 등
179+
180+
181+
#### 10차시
182+
##### XSS
183+
- XSS 란? (CSRF랑 비교해서 설명)
184+
- XSS 시연 ( https://xss-game.appspot.com/, naver xss 시연 영상 )
185+
- XSS 취약점 찾기 (미리 만든 예제 사용, 예제 1-1)
186+
187+
188+
#### 11차시
189+
##### SQLi 란?
190+
- SQLi 시연 ( https://los.eagle-jump.org/ )
191+
- SQLi 직접 해보기 (미리 예제를 만들어 사용, 예제 1-2, https://los.eagle-jump.org/ )
192+
193+
##### 자체 CTF 안내
194+
- 규칙, 시간 안내
195+
- CTF 서버 오픈
196+
197+
#### 12차시
198+
##### 자체 CTF 진행
199+
- 팀으로 나누어서 진행 (멘토는 문제와 관련된 개념 또는 원리만 알려줌.)
200+
- 순위에 따라 보상 지급
201+
202+
203+
## 예제
204+
205+
### 1-1
206+
```
207+
<?php
208+
$a = $_GET['a'];
209+
echo $a;
210+
?>
211+
212+
=> <script> alert(1); </script>
213+
```
214+
```
215+
<?php
216+
$a = $_GET['a'];
217+
if(preg_match('/script/i', $a)) exit("No Hack ~_~");
218+
echo $a;
219+
?>
220+
221+
=> <img src=x onerror="alert(1)">
222+
```
223+
224+
### 1-2
225+
226+
```
227+
<?php
228+
include './db_config.php'
229+
230+
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
231+
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
232+
$query = "select id from prob where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
233+
echo "<hr>query : <strong>{$query}</strong><hr><br>";
234+
$result = @mysql_fetch_array(mysql_query($query));
235+
if($result['id']) echo $flag;
236+
highlight_file(__FILE__);
237+
?>
238+
```

0 commit comments

Comments
 (0)