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

sullivanproject/2019-Webhacking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
ch4n3-yoon
Oct 29, 2018
2080a92 · Oct 29, 2018

History

13 Commits
Sep 5, 2018
Jul 30, 2018
Sep 14, 2018
Sep 23, 2018
Sep 23, 2018
Oct 9, 2018
Oct 29, 2018
Sep 30, 2018
Oct 19, 2018
Oct 29, 2018
Jul 30, 2018

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published