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

Latest commit

 

History

History
238 lines (185 loc) · 8.36 KB

README.md

File metadata and controls

238 lines (185 loc) · 8.36 KB

Webhacking 커리쿨럼

Basic Information

Member

  • 강민범
  • 윤석찬
  • 이주창 (팀장 : 010-6478-0124 )
  • 한종원

Objectives

  • 보안에 대해서 관심과 흥미를 가지도록 함.
  • 자기 주도적 학습과 문제해결능력 함양.
  • 물어보는 것을 부끄러워하지 않게 함.
  • 코딩과 해킹을 같이 배움으로써 코딩 실력도 기르며 해킹도 경험.
  • 해커를 지망하는 학생들에게 꿈을 향해 한 걸음 다가갈 수 있도록 도움.

Etc

   
타겟 중2 ~ 고3
난이도 ★★★★★
차시 12차시
소요시간 3시간
장소 안양
교육기자재 노트북 또는 PC

Lesson plan

Overview

차시 한줄소개
1 아이스 브레이킹 시간
2 HTTP 통신 소개
3 HTML 태그 익히기
4 DB란?
5 Mysql 구문, 원리 익히기
6 서버란?
7 PHP 쿠키 로그인
8 JS란?
9 JS로 웹페이지 만들기
10 XSS
11 SQL Injection
12 자체 CTF 진행

Detail

1차시

  • 강사소개 (윤석찬 , 한종원 , 이주창 , 강민범)
  • 해킹 분야 소개(리버싱 , 포너블 , 포렌식 , 웹해킹)및 시연
  • 학생들 자기소개
  • 간단한 퀴즈 및 게임 진행(아이스 브레이킹)
조편성
  • 강사 한 명 당 2~3 명의 학생을 담당
수업 계획 소개
  • 해킹 관련 이슈 (빗썸 해킹 사건 , intel AMT 관련 보안 문제 등)
  • 악성코드 , 바이러스 , 랜섬웨어 등에 관한 뉴스 설명
  • 어나니머스, 조지 호츠 등 해킹 관련 단체 및 인물, 일화 소개

2차시

웹페이지의 동작 원리
  • 프론트 엔드, 백엔드
  • 서버와 클라이언트
HTML 이란?
  • 실제 사이트(네이버 & 페이스북 등)를 예로 들어 설명
HTML 의 기본적인 내용
  • 실제 사이트에 주로 사용되는 줄바꿈 태그, 이미지 삽입 태그, 링크 삽입 태그 등을 설명
HTML 과 친해지기
  • 기존 사이트(네이버 & 페이스북 등)의 HTML 코드를 수정하여 자신의 것으로 만들어보고, 실시간 검색어 바꿔보기

3차시

HTML 태그 몇 가지 익히기
  • 2차시에 배웠던 태그 및 수평선 태그, 표 삽입 태그, 배경사진 첨부 태그
CSS 배워보기
  • 배경색 지정해주기, transition 태그및 동적 사이트 제작에 필요한 태그 배워보기
HTML 로 간단히 자신의 사이트 만들기
  • 단 우리가 제시한 조건(표 삽입, 배경화면 삽입, 메뉴바 생성, 사진 삽입 등)에 부합하는 사이트 만들기

4차시 - DB란?

  • DB에 대한 기본적인 개념과 사용 예

    • 데이터에 대한 설명을 하고, 데이터의 집합이 데이터베이스라는 것을 알려줌
    • 데이터베이스의 특징(실시간 접근, 중복 X 등) 지루하니까 짧고 간단하게
    • 데이터베이스의 사용 예시(전화번호부, 기업), 인식은 못하지만 엄청나게 많이 사용되고 있음(필요성)
    • DBMS의 개념 - 데이터베이스를 관리하는 시스템
  • MySQL 소개(설치는 되어 있음)

    • 우리가 사용할 DBMS라는 것을 알려주고, 간단한 MySQL 설명
    • Bitnami 실행
  • MySQL DB, TABLE 만들기

    • DB, TABLE 개념을 그림(행과 열로 이루어진 표)으로 설명하고 강사가 새로운 DB 하나 그려보기(이런 DB에는 어떤 내용이 들어가야 될까요? 물어보는 형식으로 진행)
    • 강사가 한대로 각자 만들고 싶은 DB 생각하고, 그 DB에 들어갈 속성 떠올리기(이 때 INT, CHAR, DATE 등 속성 설명하기)
    • 각자 설계한 DB를 그림으로 그리고, 명령어를 사용하여 만들고 보기(CREATE, SHOW, DESC)
      • 명령어는 대소문자 구분없음

5차시 - Mysql 구문, 원리 익히기

  • 이전 시간에 배운 DB, TABLE 만들기 간단하게 복습

  • 이전 시간에 만든 DB에 데이터 삽입하고 확인하기(INSERT, SELECT)

    • ; 찍기 전까지는 명령어 안끝나니 너무 길어지면 보기 편하게 enter 누르세요
    • 한 두번 같이해보고 각자 데이터 쭉쭉 넣어보기(많으면 좋음, 뒤에서 농락할 생각)
  • 이번에는 데이터 삭제해보기(DELETE)

    • 문제가 발생! 삭제하니까 다 삭제됨
    • WHERE의 필요성을 몸소 느낌
  • WHERE 설명

    • 필요성 설명하기(데이터를 잘못삽입한 경우, 데이터가 너무 많으면 원하는 데이터 보기 보기 힘들음)
    • =, <, >, 연산자 설명
    • WHERE를 사용하여 조건을 만드는 문제를 몇개 내줌? ex.) 가격이 1000이상인 데이터만 뽑아보세요
    • 조건이 '또는', '그리고'로 연결되어 있는 문제가 나옴
    • 그리고 AND, OR, NOT 설명하기
    • AND, OR, NOT 사용해보기

6차시 - 서버란?

  • 서버와 클라이언트, 백엔드 개념 복습하기(2차시에 있음)

  • PHP와 필요성에 대한 설명

    • 저번에 SELECT와 WHERE로 데이터 뽑아온것을 쉽게 웹페이지에 띄울 수 있음
    • 웹문서 하나하나 찾아가면서 내용 수정 안해도 됨
    • 반복문, 조건문이라는 것이 있음
  • echo를 사용해서 아무거나 출력해보기

    • 문자열은 따옴표로 감싸야됨
  • PHP에 사용될 변수와 연산자 설명

    • 변수는 앞에 &가 붙음 + 변수 생성 규칙(대소문자 구분 등)
    • 연산자 +, -, *, % 등 설명하기
  • 변수끼리 사칙연산을 해서 출력해보기

7차시

PHP 쿠키 로그인
  • 쿠키의 개념을 알려줌
  • 로그인 원리 알려줌
  • 쿠키 로그인 구현
  • 로그인을 구현하면서 대략적으로 알고 있을 조건문과 반복문에 대한 개념 확실히 함.
PHP Session Login
  • HTTP 상에서의 세션의 개념 알려줌.
  • 세션 로그인 구현
  • 세션 탈취를 이용한 계정 변경 시연을 이용해 세션의 중요성과 원리를 다시 배움.
PHP MySQL Connection
  • 시간이 여유롭다면 진행할 예정.
  • mysqli* 함수를 이용해서 수업 (PDO, mysql 객체는 객체 지향의 개념이 들어가기 때문에 함수로 대체)
  • 위의 과정에서 만든 로그인 코드에 약간의 코드를 더하여 완성

8차시

Javascript의 개념 및 배경 지식
  • 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 값을 빼앗기 때문임.)
Javascript 함수 둘러보기
  • 웹 페이지에서 많이 사용하는 함수 위주로 교육 에정
  • alert, confirm, prompt 등

10차시

XSS
  • XSS 란? (CSRF랑 비교해서 설명)
  • XSS 시연 ( https://xss-game.appspot.com/, naver xss 시연 영상 )
  • XSS 취약점 찾기 (미리 만든 예제 사용, 예제 1-1)

11차시

SQLi 란?
자체 CTF 안내
  • 규칙, 시간 안내
  • CTF 서버 오픈

12차시

자체 CTF 진행
  • 팀으로 나누어서 진행 (멘토는 문제와 관련된 개념 또는 원리만 알려줌.)
  • 순위에 따라 보상 지급

예제

1-1

<?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)">

1-2

<?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__);
?>