Try to be the expert.

Ainsetin's Hacking & PS & Math

2021 1人 1 Project 8

1인 1프로젝트 : 9일차 (웹해킹 문제 설계, 웹개발 계획 설계)

나는 server template으로써 작동하는 Jinja2에서 유저가 입력한 내용을 그대로 템플릿에서 실행할 때 발생하는 Server Side Template Injection (SSTI)를 실습할 수 있는 웹해킹 문제를 만들어 볼 것이다. SSTI는 다음과 같이 발생하게 된다. 위 그림에서는 각 단계가 초록색 화살표(injection O), 빨간색 화살표(injection X) 로 분기되어 있다. 그 이유는 무엇일까? 만약 웹 서비스에서 SSTI 취약점이 발생한다면, 어떤 환경인지에 따라 유저가 위와 같은 구문을 집어넣었을 때 결과값이 내가 넣은 문자가 그대로 나오거나 연산 결과를 출력한다. 이는 어떤 template engine을 사용하였는지에 따라 달라진다. 예를 들면, 나는 Jinja2 기반 서..

2021 1人 1 Project 2021.06.17

1인 1프로젝트 : 8일차 (python Flask & Jinja2 template)

Flask는 파이썬으로 작성된 마이크로 웹 프레임워크의 하나로, Werkzeug 툴킷과 Jinja2 템플릿 엔진에 기반을 두고 있다. Flask로 누구나 손쉽게 웹 서버를 열 수 있으며, 동작하고 있는 서버 상에서는 debug mode를 통해 어떻게 http 요청이 진행되고 있는지를 알 수 있어 간편하고 깔끔한 웹 프레임워크로 현재까지도 자리잡고 있다. flask로 로컬에서 웹서버를 만드는 과정은 다음과 같다. 1. python3의 pip로 flask 설치 2. flask 설치 후 가장 기본적인 파일인 app.py를 수정하여 원하는 페이지에 접근할 수 있도록 기본 뼈대 작성. 3. python3 app.py 실행 -> localhost:5000에 잘 붙었는지 확인. (기본 포트는 5000) 4. Jinj..

2021 1人 1 Project 2021.06.15

1인 1프로젝트 : 7일차 (prototype & pollution)

어떤 한 객체는 반드시 [[prototype]]이라는 hide property를 가지고 있다. 이 property는 내부에서 참조를 통해 다른 객체의 메서드나 변수를 가져올 수 있는 기능을 한다. 예를 들어, 다음과 같은 코드에서 prototype이 어떤 값을 가지고 있는지를 알 수 있다. 1 2 3 4 5 6 7 a={ 'A': 1234, 'B': "5678" } var b={}; console.log(b.__proto__) cs __proto__ 를 사용하면 위 사진과 같이 참조할 또 다른 객체를 적용시킬 수 있는데, 현재 b라는 객체는 constructor, __defineGetter__, .... 등을 가지고 있는 내부 객체가 할당되어 있다. 따라서 __proto__ 값을 a라는 객체로 만들어주면..

2021 1人 1 Project 2021.06.10

1인 1프로젝트 : 6일차 (객체와 this의 역할)

이번에는 javascript의 큰 특징인 객체의 this에 대해서 공부하였다. 1 2 3 4 5 6 7 8 9 let user = { name: "John", age: 30, // 메서드 선언 sayHi(){ alert(this.name); } } cs 객체는 다음과 같이 {}와 key - value 형태로 선언할 수 있다. 객체 안에는 위와 같이 메서드를 선언할 수도 있다. 여기서 메서드란, 객체 property 안에 할당된 함수를 의미한다. 1 2 3 4 5 6 7 8 9 10 11 12 let user = { name: "John", age: 30, // 메서드 선언 sayHi(){ alert(this.name); } } let admin = user; admin.sayHi(); cs 다음과 같이 ..

2021 1人 1 Project 2021.03.30

1인 1프로젝트 : 5일차 (Javascript의 자료형, ?? 연산자)

Javascript의 자료형 오늘은 Javascript의 자료형에 대하여 알아보았다. 자료형의 종류는 여러가지인데, boolean, string, object, number 등이 있다. 자료형을 확인하는 방법은 typeof 확인할 변수 or typeof(확인할 변수) 를 사용하면 된다. typeof에서는 javascript에서 지원하는 함수를 인자로 넣었을 때 "function"이라고 반환해준다. 만약 내가 string을 number형으로 바꾸고 싶으면, 다음과 같이 Number() 함수를 사용하면 된다. number 자료형은 Infinity, -Infinity, NaN과 같은 특수한 숫자의 경우도 포함한다. 예시로, 양수를 0으로 나눴을 때는 Infinity, 음수를 0으로 나눴을 때는 -Infinit..

2021 1人 1 Project 2021.03.16

1인 1프로젝트 : 4일차 (1분발표, Javascript 공부)

Today's Work 지금까지 계획한 것을 친구들 앞에서 발표하는 시간을 가졌다. 웹해킹에서 JS와 파이썬의 중요성을 느껴 이 연구주제를 잡았고, 오늘부터 틈틈히 Javascript부터 시작해서 공부를 하려고 한다. 우선, C언어의 기본 문법을 잘 알고 있었고, 작년에 응용프로그래밍 화면 구현 시간에 조금 공부를 해봤기 때문에, 어느 정도 연산자나 조건문, 반복문 등은 문제 없이 할 수 있다. 다만, JS에서만 허용하는 문법들이나 새로운 개념, 그리고 내장함수들을 중점으로 공부한다면, 좀 더 구체적으로 활용할 수 있지 않을까 생각하여 간단한 변수의 형부터 시작하여 클래스, 비동기 등까지 공부해볼 생각이다. Javascript의 변수와 상수 JS에서 사용하는 변수에는 var, let, const 가 있다..

2021 1人 1 Project 2021.03.15

1인 1프로젝트 : 1~3일차

1. 자기계발계획서 작성하기 2. 연구 주제 및 내용, 연구방법 생각해보기 3. 간단 발표 준비하기 연구주제 Javascript와 python의 문법과 내장함수를 정리하고, 두 언어를 활용하여 나만의 웹해킹 문제 제작하기, 누가봐도 깔끔한 페이지를 가진 웹개발 도전해보기 선정이유 중학교 때 C언어의 문법과 알고리즘을 중심으로 공부했기 때문에 C언어는 자신 있지만, 나에게 제일 취약한 웹해킹 문제를 접하면서 자바스크립트나 파이썬의 문법과 내장함수에 대해 뜨문뜨문 공부했다고 생각이 들었고, 이번 계기를 통해 접근 방식이나 웹개발 습관을 바로잡기 위해서 이 연구 주제를 선정하였습니다. 연구내용 JavaScript, Python의 기본 문법과 내장함수 학습 두 언어를 활용한 웹해킹 문제 제작 php를 사용하지 ..

2021 1人 1 Project 2021.03.11

자기계발계획서

안녕하세요. 저는 한국디지털미디어고등학교 18기 해킹방어과에 재학중인 배원욱입니다. 저를 소개하기에 앞서, 디미고를 입학하고 싶었던 중학교 때로 다시 돌아가보겠습니다. 중학생 땐 "해킹"이라는 것의 개념을 알아보고, 이론적으로만 "해킹"이 어떤 것인지 파악하였습니다. 그러나, 직접적으로 어떻게 해킹을 공부해야 할지 몰랐었기 때문에 요즘 많이 뜨는 "코딩과 알고리즘, 자료구조"에 초점을 맞추어 공부하였습니다. 이러한 기초를 바탕으로 고등학교를 입학하여 교내 정보보안동아리 STEALTH에 가입을 해 정말 해킹은 어떻게 하는 것인지, 해킹의 다양한 분야에 대한 기초 지식과 실습은 어떻게 진행하는지에 대해 직접 따라해보기도 하고 많이 고민하였습니다. 1년이라는 시간이 지나 동아리장을 맡게 되었고, 직접 후배들을..

2021 1人 1 Project 2021.03.09