목록분류 전체보기 (285)
tmxklab
1. 개발 환경 Framework : Laravel IDE : Visual Code(vscode) Language : php server & DB : XAMPP(Apache, MySQL) browser : Chrome 2. 프로젝트 생성 및 vscode로 프로젝트 열기 1) 프로젝트 생성 및 확인 $laravel new [프로젝트명] 설치 후 프레임 워크 버젼 확인 $php artisan --version 추가로 $php artisan명령을 많이 사용할 텐데 커맨드 옵션 확인하려면 다음 $php artisan 라라벨 실행 $php artisan serve localhost:8000으로 접속하면 웹 페이지가 뜨는 것을 확인할 수 있다. 여기까지는 그 전 내용이랑 겹칠 것이다. 2) vscode로 프로젝트 ..
1) DAO(Data Access Object) DAO는 DB의 data에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다. MVC 패턴의 Model에서 이와 같은 일을 수행한다. 2) DTO(Data Transfer Object) DTO는 계층간(Controller, View, Business Layer) 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미한다. DTO는 로직을 가지지 않는 데이터 객체이고 getter/setter메소드만 가진 클래스를 의미한다. +) Java Beans Java로 작성된 소프트웨어 컴포넌트를 지칭하는 단어 비즈니스 로직 부분을 담당하는 Java 프로그램 단위 (장점) JSP페이지가 복잡한 자바 코드로 구..
1. MVC 패턴 MVC는 Model, View, Controller의 약자로 비즈니스 로직과 사용자 뷰(인터페이스) 영역을 분리하기 위한 소프트웨어 개발 방법론이다. 이렇게 영역을 분리함으로써 유지보수를 높이고 각각의 영역마다 개발자들이 맡아 집중할 수 있도록 하여 개발의 효율성을 극대화시킬 수 있다. 프로젝트를 구성할 때 다음과 같이 3가지 형태로 나누어 개발하는 패턴. ① Model 내부 비지니스 로직을 처리하기 위한 역할 알고리즘, DB와 상호작용, 데이터 처리 등등 Java로 구현 ② Controller 사용자의 입력 처리와 흐름 제어를 하는 역할 사용자로부터의 입력을 받고 Model 또는 View의 중개인 JSP, 서블릿 등 Server Side 언어로 구현 ③ View 클라이언트와 서버 간의..
1. 프레임워크(Framework) 1.1 정의 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 추가 설명) 혼자서 개발을 할 때는 문제가 되지 않지만 만약 대규모 프로젝트를 진행할 경우 여러 사람이 공동으로 작업을 진행하게 되면서 개발자간에 서로 결과물을 공유하거나 신경써야할 점이 많아 문제가 발생할 수 있다. 프레임워크는 이러한 문제점을 해결하기 위해 개발자들이 원하는 기능 구현에만 집중하여 빠르게 개발할 수 있도록 개발 표준 가이드를 정의한다. 1.2 특징 및 장,단점 ① 특징 정해진 개발 가이드라인이 있다. 개발할 수 있는 범위가 존재한다. 개발자를 위한 다양한 도구들이 지원된다. ② 장점 체계적인 코드관리로 유지보수 용이 높은..
0. client-side & server-side 처리되는 작업의 위치에 따라 client-side & server-side로 구분된다. 1) client-side 클라이언트 측(브라우저)에서 수행하는 처리를 뜻한다. 3대장 : HTML(구조), JavaScript(동작), CSS(디자인) Ajax, jQuery 등등.. 2) server-side 서버 측에서 수행하는 처리를 뜻한다. PHP, JSP, ASP Ruby, Python 등등... 1. 웹 서버(Web Server) 웹 브라우저(클라이언트)의 요청(http request)을 받아 해당하는 웹 페이지를 찾아서 보내주는(response) 역할을 수행한다. 또한 웹 서버는 HTML 문서 파일을 찾아서 보내주는 것 외에도 HTML문서를 생성하는 프..
1. 문제확인 무슨 자물쇠를 푸는 것 같고 pin 1 ~ 5까지 선택할 수 있는데 나중에 보니 pin은 3 → 1 → 5 → 2 → 4 순서대로 문제를 해결하면 된다. 1) main() int __cdecl main(int argc, const char **argv, const char **envp) { puts("*** WELCOME TO THE SCHLAGE 9000 ***"); puts("*** AUTHORIZED USERS ONLY ***"); LABEL_8: while ( (unsigned __int8)is_lock_unlocked("*** AUTHORIZED USERS ONLY ***", argv) != 1 ) { print_lock(); switch ( (unsigned __int64)(un..
1. 문제확인 1) side-channel.py 1-1) main() main함수에서 init_password()를 통해 password 8자리가 0 ~ f범위를 가진 랜덤 값으로 세팅되고 guess_password()가 두 번 실행된다. 1-2) guess_password() password와 입력 값이랑 문자 1개씩 비교하고 결과가 같지 않으면 0.1 * password[i]의 인덱스 값만큼 sleep된다. 2. 문제 풀이 guess_password()가 두 번 실행되므로 처음 guess_password()에서는 sleep되는 시간을 통해서 password의 값을 유추한다. 그리고 시간 값을 통해서 password의 값을 유추한다. 몇 번 돌리고 나면 실제로 리모트에서는 0이면 0초, 1이면 0.1초..
1. 문제 확인 실행시켜보면 이상한 점이 있다. 원하는 숫자를 입력하라길레 10을 넣었는데 10번 반복되지 않고 6번만 반복되고 종료된다. 1) mitigation 확인 2-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int number; // [rsp+Ch] [rbp-4h] puts("How many favorite numbers do you have?"); fgets(buffer, 20, stdin); number = atoi(buffer); if ( number > 100 || number > 4); for ( i = 0; (int)i < num; ++i ) { printf("Enter number %d/%..
사실 이 문제는 PIE도 걸려있는데 어떤 주소를 참조해야할 지 몰라서 못 풀었던 문제이다. 대회가 끝나고 다른 사람의 롸업을 보고 정리해야할 필요성이 있어 작성하게 되었다. 해당 문제는 vsyscall영역을 이용하여 익스한다. 1. 문제확인 어떤 것을 call할 것인지 물어보고 입력을 받으면 segmentaton fault가 발생하면서 종료됨 1) mitigation 확인 2-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax int v4; // edx void (*call)(void); // [rsp+8h] [rbp-20h] __int64 v7; // [rsp+10h] [rbp-18h] un..
웹 사이트 개발에 앞서 먼저 윈도우에서 라라벨 개발환경 구축하는 방법에 다루기로 한다. 라라벨은 GUI환경보다는 CLI환경에 적합하므로(명령행 도구를 많이 씀) 윈도우에서 사용하기 불편하다. 하지만 나는 git bash나 wsl이 깔려있기 때문에 게의치 않고 윈도우에서 라라벨 개발환경 구축을 하기로 한다.ㅋㄷㅋㄷ 그리고 여기서 다루는 내용은 라라벨 홈스테드를 사용하지 않는다. 라라벨 홈스테드로 개발환경을 구성하려면 다음 사이트를 참고하길 바란다. 라라벨 7.x - 홈스테드 라라벨 한글 메뉴얼 7.x - 홈스테드 laravel.kr 0. 라라벨 동작에 필요한 php버젼 및 필요 모듈 해당 문서를 작성한 시점인 2020-10-09에서 laravel 개발환경 및 요구사항 조건은 다음과 같다. 개발환경 및 서버..