분류 전체보기
-
보호되어 있는 글입니다.
[Web] Dreampring보호되어 있는 글입니다.
2024.01.22 -
보호되어 있는 글입니다.
[System] master canary보호되어 있는 글입니다.
2023.08.28 -
REPL 사용하기 javascript는 스크립트 언어이므로 미리 컴파일하지 않아도 바로 실행이 가능하다. 노드의 콘솔을 REPL이라고 부르는데 R(read) E(eval) P(print) L(loop)라서 REPL이라고 부른다. node를 입력하면 js 코드를 입력할 수 있는 창이 나온다. 그리고 REPL은 js 파일도 실행시킬 수 있다. function add(x, y) { return x + y; } const result = add(1, 2); console.log(result); js 파일을 만들어서 코드를 작성하고 node ${filename}을 입력하면 해당 파일의 결과가 출력된다. Module로 만들기 노드는 코드를 모듈로 만들 수 있다. 모듈이란 특정한 기능을 하는 함수나 변수들의 집합을 ..
[Javascript] Node js 기초 3장REPL 사용하기 javascript는 스크립트 언어이므로 미리 컴파일하지 않아도 바로 실행이 가능하다. 노드의 콘솔을 REPL이라고 부르는데 R(read) E(eval) P(print) L(loop)라서 REPL이라고 부른다. node를 입력하면 js 코드를 입력할 수 있는 창이 나온다. 그리고 REPL은 js 파일도 실행시킬 수 있다. function add(x, y) { return x + y; } const result = add(1, 2); console.log(result); js 파일을 만들어서 코드를 작성하고 node ${filename}을 입력하면 해당 파일의 결과가 출력된다. Module로 만들기 노드는 코드를 모듈로 만들 수 있다. 모듈이란 특정한 기능을 하는 함수나 변수들의 집합을 ..
2023.08.24 -
보호되어 있는 글입니다.
[System] Master Canary보호되어 있는 글입니다.
2023.08.23 -
node js는 공식 홈페이지에서 다운로드가 가능하다. https://nodejs.org/ko/download 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 1. ES2015+ ES2015+는 자바스크립트 문법이다. 2015년에 자바스크립트 문법에 큰 변화가 있었는데 어떤 식으로 변화되었는지 같이 알아보자. 1.1 const, let 보통 javascript는 var로 변수를 선언한다. 하지만 ES2015+부터는 const와 let가 추가되었다. if(true) { var a = 1; } console.log(a); if(true) { let b = 2; } console.l..
[Javascript] Node js 기초 2장node js는 공식 홈페이지에서 다운로드가 가능하다. https://nodejs.org/ko/download 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 1. ES2015+ ES2015+는 자바스크립트 문법이다. 2015년에 자바스크립트 문법에 큰 변화가 있었는데 어떤 식으로 변화되었는지 같이 알아보자. 1.1 const, let 보통 javascript는 var로 변수를 선언한다. 하지만 ES2015+부터는 const와 let가 추가되었다. if(true) { var a = 1; } console.log(a); if(true) { let b = 2; } console.l..
2023.08.22 -
Master Canary 스택 버퍼를 사용하는 모든 함수에서 같은 카나리 값을 사용한다. 이러한 특징 때문에 임의 함수에서 메모리 릭으로 카나리를 알아낼 수 있다면 다른 함수에서 발생하는 스택 버퍼 오버플로우에서 카나리를 덮어쓰고 실행 흐름을 조작할 수 있다. SSP 동작원리를 살펴보면 버퍼를 사용하는 함수의 프롤로그에서 fs:0x28에 위치하는 값을 가져와서 rbp바로 앞에 삽입한다. static void security_init (void) { /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); #ifdef THREAD_SET_STACK_GUARD THREAD..
Master CanaryMaster Canary 스택 버퍼를 사용하는 모든 함수에서 같은 카나리 값을 사용한다. 이러한 특징 때문에 임의 함수에서 메모리 릭으로 카나리를 알아낼 수 있다면 다른 함수에서 발생하는 스택 버퍼 오버플로우에서 카나리를 덮어쓰고 실행 흐름을 조작할 수 있다. SSP 동작원리를 살펴보면 버퍼를 사용하는 함수의 프롤로그에서 fs:0x28에 위치하는 값을 가져와서 rbp바로 앞에 삽입한다. static void security_init (void) { /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); #ifdef THREAD_SET_STACK_GUARD THREAD..
2023.08.22 -
함수 호출 규약 함수 호출 규약은 함수 호출 시 일어나는 행동에 대한 약속이다. 한 함수에서 다른 함수로 호출할 때, 프로그램의 실행 흐름은 다른 함수로 이동한다. 그리고 호출한 함수가 반환하면, 다시 원래의 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 그러므로 함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack frame) 및 반환 주소(Return address)를 지정해줘야 한다. 또한 호출자는 피호출자(Callee)가 요구하는 인자를 전달해 줘야 며, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다. 함수 호출 규약은 여러 가지 있는데 프로그래머가 코드에 명시하지 않는다면 컴파일러는 지원하는 호출 규약 중에서 CPU 아키텍처에 적합한 것을 선택한다. 함수 호..
Calling Convention함수 호출 규약 함수 호출 규약은 함수 호출 시 일어나는 행동에 대한 약속이다. 한 함수에서 다른 함수로 호출할 때, 프로그램의 실행 흐름은 다른 함수로 이동한다. 그리고 호출한 함수가 반환하면, 다시 원래의 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 그러므로 함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack frame) 및 반환 주소(Return address)를 지정해줘야 한다. 또한 호출자는 피호출자(Callee)가 요구하는 인자를 전달해 줘야 며, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다. 함수 호출 규약은 여러 가지 있는데 프로그래머가 코드에 명시하지 않는다면 컴파일러는 지원하는 호출 규약 중에서 CPU 아키텍처에 적합한 것을 선택한다. 함수 호..
2023.08.21 -
Node JS 개념 웹 개발을 하기 위해 언어에 대한 개념부터 심화까지 공부하면서 실습까지 진행해 보자. Node js는 Chroe V8 Javascript 엔진으로 빌드된 Javascript 런타임이다. Node는 V8 엔진과 같이 libuv라는 라이브러리를 사용한다. V8과 libuv는 C와 C++로 구현되어 있다. libuv 라이브러리는 노드의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다. 각 모델이 무엇이고 어떤 장단점들이 있는지 알아보자. 이벤트 기반 이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 방식을 의미한다. 이벤트는 클릭이나 네트워크 요청 등이 있을 수 있다. 이벤트 기반 시스템에는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두어야 하는데 이를 이벤트 리스너에 ..
[Javascrpit] Node js 기초 1장Node JS 개념 웹 개발을 하기 위해 언어에 대한 개념부터 심화까지 공부하면서 실습까지 진행해 보자. Node js는 Chroe V8 Javascript 엔진으로 빌드된 Javascript 런타임이다. Node는 V8 엔진과 같이 libuv라는 라이브러리를 사용한다. V8과 libuv는 C와 C++로 구현되어 있다. libuv 라이브러리는 노드의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다. 각 모델이 무엇이고 어떤 장단점들이 있는지 알아보자. 이벤트 기반 이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 방식을 의미한다. 이벤트는 클릭이나 네트워크 요청 등이 있을 수 있다. 이벤트 기반 시스템에는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두어야 하는데 이를 이벤트 리스너에 ..
2023.08.20