- 강민범
- 윤석찬
- 이주창 (팀장 : 010-6478-0124 )
- 한종원
- 보안에 대해서 관심과 흥미를 가지도록 함.
- 자기 주도적 학습과 문제해결능력 함양.
- 물어보는 것을 부끄러워하지 않게 함.
- 코딩과 해킹을 같이 배움으로써 코딩 실력도 기르며 해킹도 경험.
- 해커를 지망하는 학생들에게 꿈을 향해 한 걸음 다가갈 수 있도록 도움.
타겟 | 중2 ~ 고3 |
난이도 | ★★★★★ |
차시 | 12차시 |
소요시간 | 3시간 |
장소 | 안양 |
교육기자재 | 노트북 또는 PC |
차시 | 한줄소개 |
---|---|
1 | 아이스 브레이킹 시간 |
2 | HTTP 통신 소개 |
3 | HTML 태그 익히기 |
4 | DB란? |
5 | Mysql 구문, 원리 익히기 |
6 | 서버란? |
7 | PHP 쿠키 로그인 |
8 | JS란? |
9 | JS로 웹페이지 만들기 |
10 | XSS |
11 | SQL Injection |
12 | 자체 CTF 진행 |
- 강사소개 (윤석찬 , 한종원 , 이주창 , 강민범)
- 해킹 분야 소개(리버싱 , 포너블 , 포렌식 , 웹해킹)및 시연
- 학생들 자기소개
- 간단한 퀴즈 및 게임 진행(아이스 브레이킹)
- 강사 한 명 당 2~3 명의 학생을 담당
- 해킹 관련 이슈 (빗썸 해킹 사건 , intel AMT 관련 보안 문제 등)
- 악성코드 , 바이러스 , 랜섬웨어 등에 관한 뉴스 설명
- 어나니머스, 조지 호츠 등 해킹 관련 단체 및 인물, 일화 소개
- 프론트 엔드, 백엔드
- 서버와 클라이언트
- 실제 사이트(네이버 & 페이스북 등)를 예로 들어 설명
- 실제 사이트에 주로 사용되는 줄바꿈 태그, 이미지 삽입 태그, 링크 삽입 태그 등을 설명
- 기존 사이트(네이버 & 페이스북 등)의 HTML 코드를 수정하여 자신의 것으로 만들어보고, 실시간 검색어 바꿔보기
- 2차시에 배웠던 태그 및 수평선 태그, 표 삽입 태그, 배경사진 첨부 태그
- 배경색 지정해주기, transition 태그및 동적 사이트 제작에 필요한 태그 배워보기
- 단 우리가 제시한 조건(표 삽입, 배경화면 삽입, 메뉴바 생성, 사진 삽입 등)에 부합하는 사이트 만들기
-
DB에 대한 기본적인 개념과 사용 예
- 데이터에 대한 설명을 하고, 데이터의 집합이 데이터베이스라는 것을 알려줌
- 데이터베이스의 특징(실시간 접근, 중복 X 등) 지루하니까 짧고 간단하게
- 데이터베이스의 사용 예시(전화번호부, 기업), 인식은 못하지만 엄청나게 많이 사용되고 있음(필요성)
- DBMS의 개념 - 데이터베이스를 관리하는 시스템
-
MySQL 소개(설치는 되어 있음)
- 우리가 사용할 DBMS라는 것을 알려주고, 간단한 MySQL 설명
- Bitnami 실행
-
MySQL DB, TABLE 만들기
- DB, TABLE 개념을 그림(행과 열로 이루어진 표)으로 설명하고 강사가 새로운 DB 하나 그려보기(이런 DB에는 어떤 내용이 들어가야 될까요? 물어보는 형식으로 진행)
- 강사가 한대로 각자 만들고 싶은 DB 생각하고, 그 DB에 들어갈 속성 떠올리기(이 때 INT, CHAR, DATE 등 속성 설명하기)
- 각자 설계한 DB를 그림으로 그리고, 명령어를 사용하여 만들고 보기(CREATE, SHOW, DESC)
- 명령어는 대소문자 구분없음
-
이전 시간에 배운 DB, TABLE 만들기 간단하게 복습
-
이전 시간에 만든 DB에 데이터 삽입하고 확인하기(INSERT, SELECT)
- ; 찍기 전까지는 명령어 안끝나니 너무 길어지면 보기 편하게 enter 누르세요
- 한 두번 같이해보고 각자 데이터 쭉쭉 넣어보기(많으면 좋음, 뒤에서 농락할 생각)
-
이번에는 데이터 삭제해보기(DELETE)
- 문제가 발생! 삭제하니까 다 삭제됨
- WHERE의 필요성을 몸소 느낌
-
WHERE 설명
- 필요성 설명하기(데이터를 잘못삽입한 경우, 데이터가 너무 많으면 원하는 데이터 보기 보기 힘들음)
- =, <, >, 연산자 설명
- WHERE를 사용하여 조건을 만드는 문제를 몇개 내줌? ex.) 가격이 1000이상인 데이터만 뽑아보세요
- 조건이 '또는', '그리고'로 연결되어 있는 문제가 나옴
- 그리고 AND, OR, NOT 설명하기
- AND, OR, NOT 사용해보기
-
서버와 클라이언트, 백엔드 개념 복습하기(2차시에 있음)
-
PHP와 필요성에 대한 설명
- 저번에 SELECT와 WHERE로 데이터 뽑아온것을 쉽게 웹페이지에 띄울 수 있음
- 웹문서 하나하나 찾아가면서 내용 수정 안해도 됨
- 반복문, 조건문이라는 것이 있음
-
echo를 사용해서 아무거나 출력해보기
- 문자열은 따옴표로 감싸야됨
-
PHP에 사용될 변수와 연산자 설명
- 변수는 앞에 &가 붙음 + 변수 생성 규칙(대소문자 구분 등)
- 연산자 +, -, *, % 등 설명하기
-
변수끼리 사칙연산을 해서 출력해보기
- 쿠키의 개념을 알려줌
- 로그인 원리 알려줌
- 쿠키 로그인 구현
- 로그인을 구현하면서 대략적으로 알고 있을 조건문과 반복문에 대한 개념 확실히 함.
- HTTP 상에서의 세션의 개념 알려줌.
- 세션 로그인 구현
- 세션 탈취를 이용한 계정 변경 시연을 이용해 세션의 중요성과 원리를 다시 배움.
- 시간이 여유롭다면 진행할 예정.
- mysqli* 함수를 이용해서 수업 (PDO, mysql 객체는 객체 지향의 개념이 들어가기 때문에 함수로 대체)
- 위의 과정에서 만든 로그인 코드에 약간의 코드를 더하여 완성
- Javascript의 개념 및 사용되는 이유
- Naver, Facebook 등 유명한 사이트의 Javascript의 소스 코드를 보여주며, Browser 상에서(Client Side에서) 유용하기 때문에 많이 사용한다고 설명할 예정임
- Javascript의 기본 문법
- Chrome 등의 Browser 상에 내장된 Javascript Console로 수업 진행 (IE는 불편하기 때문에 수업에서 배제할 계획임)
- DOM (Document Object Model)에 대해서 설명.
- document.cookie
- document.domain
- document.getElementById()
- etc.
- Location 객체에 대해 설명
- location.href (이것을 통해 Cookie 및 Session 값을 빼앗기 때문임.)
- 웹 페이지에서 많이 사용하는 함수 위주로 교육 에정
- alert, confirm, prompt 등
- XSS 란? (CSRF랑 비교해서 설명)
- XSS 시연 ( https://xss-game.appspot.com/, naver xss 시연 영상 )
- XSS 취약점 찾기 (미리 만든 예제 사용, 예제 1-1)
- SQLi 시연 ( https://los.eagle-jump.org/ )
- SQLi 직접 해보기 (미리 예제를 만들어 사용, 예제 1-2, https://los.eagle-jump.org/ )
- 규칙, 시간 안내
- CTF 서버 오픈
- 팀으로 나누어서 진행 (멘토는 문제와 관련된 개념 또는 원리만 알려줌.)
- 순위에 따라 보상 지급
<?php
$a = $_GET['a'];
echo $a;
?>
=> <script> alert(1); </script>
<?php
$a = $_GET['a'];
if(preg_match('/script/i', $a)) exit("No Hack ~_~");
echo $a;
?>
=> <img src=x onerror="alert(1)">
<?php
include './db_config.php'
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
if($result['id']) echo $flag;
highlight_file(__FILE__);
?>