공부/JUN STUDY 20

ubutnu에서 firebase 세팅법 (간단한 백엔드 웹서버 만들기)

Firebase는 NPM(Node Package Manager)을 사용하는 JavaScript 기반의 프레임워크이다. Firebase의 다양한 서비스를 사용하려면 Firebase SDK를 프로젝트에 추가해야한다. Firebase SDK는 웹 프로젝트를 위한 JavaScript 라이브러리로서, 이를 통해 Firebase의 다양한 서비스에 액세스할 수 있다. 특히나 DB, 동적 웹배포에서 매우 강력한 기능을 가지고있다. 본 포스팅에서는 firebase를 이용해 간단한 서비스를 배포하는 방법을 정리하고자 한다. firebase 설치 firebase는 npm 기반의 프레임워크이기때문에 npm이 설치 되어있지않다면 먼저 설치해주자. sudo apt install npm sudo npm install firebas..

공부/JUN STUDY 2024.01.05

MYSQL 설치 및 사용법 / 기본 CRUD 세팅 (ubuntu, node.js 이용)

ubuntu에서 node.js를 이용해 개발 중 DB 기능이 빠르게 필요할때 설치하고 사용하는 방법을 적어보았다. 1. mysql 설치 sudo apt-get install mysql-server 2. mysql 접속 sudo /usr/bin/mysql -u root -p 사용자 정보 확인 SELECT User, Host, authentication_string FROM mysql.user; 3. 데이터 베이스 생성 및 확인 CREATE DATABASE securea_wallpad_service; SHOW DATABASES; 4. 테이블 생성 및 확인 CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, pas..

공부/JUN STUDY 2024.01.03

Wireguard VPN android 라이브러리 github 예제 (Anton2319) 분석 in Windows

아래 자료들을 참고해 Wireguard 라이브러리를 사용하는 android 예제를 분석해보았다. 본 자료는 wireguard 라이브러리를 이용해 터널을 생성하고 간단한 Wireguard Connection을 가능하게 해주는 android 앱 예제 코드이다. 윈도우에서도 잘 작동하는 것을 확인 (2024.1.2)하였다. 본래 Wireguard 에서 제공하는 공식 wireguard-android 레포지토리가 있기는 하나, gradlew 실행 관련 문제로 윈도우에서 잘 실행이 되지 않았다. 참고자료 https://github.com/Anton2319/Anton2319/blob/master/articles/wireguard-guide/article.md https://github.com/Anton2319/Wir..

공부/JUN STUDY 2024.01.02

해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문

https://posty.pe/guz2ze 해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문(0)해킹이란? 해킹대회 출전을 위한 시스템해킹(Pwnable)입문 입니다.본 강의는 해킹에 관심을 갖고 처음 공부하시는 분들, 처음으로 CTF(Capture The Flag, 해킹방어대회)에 출전을 희망하고 계신 분들을 juntheworld.postype.com해킹대회 출전을 위한 시스템해킹(Pwnable)입문 입니다. 본 강의는 해킹에 관심을 갖고 처음 공부하시는 분들, 처음으로 CTF(Capture The Flag, 해킹방어대회)에 출전을 희망하고 계신 분들을 위해 작성된 자료입니다. 흔히 해킹이라고하면 진입장벽이 높은데요. 취약점 분석과 공격기법을 실제로 수행하는 과정을 하나라도 제대로 이해하면..

공부/JUN STUDY 2023.07.13

ASCII 코드란? (컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법)

ASCII 코드의 등장이유 ASCII 코드는 컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법을 고민하다가 등장한 개념이다. 우선 이해하면 좋을 전제가 컴퓨터는 오로지 숫자(이진수 형태) 밖에 저장할 수 없다. 이다. 컴퓨터를 통해서 문자를 저장하고 싶은데 컴퓨터는 오로지 숫자밖에 저장할 수 없으니 문자를 나타내기로 약속한 숫자들을 정해놓은 것이고 그 숫자(코드)들을 바로 ASCII 코드라고 한다. 위에 보이는 사진에 나타난 개념과 쓰임새가 전부다. 아스키 코드에 나타난 10진수 16진수 이런 부분에 고민할 필요가 없다. 이때 ASCII 코드 표에 1번부터 ~번까지 문자가 아닌 것들이 등장하는 부분이 있는데 이건 문자가 아니라 특정히 약속된 상황들(SPACE, ESC...)에 대한 코드 값들이다. ..

공부/JUN STUDY 2022.10.22

[Fuzzing101] Exercise 1 CVE-2019-13288 분석 (커맨드 분석하기)

추가2024.5.12 : 아래 링크에 가보시면 더 많은 시리즈 자료를 확인할 수 있습니다.아래 링크 서론https://github.com/antonio-morales/Fuzzing101 GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiativeAn step by step fuzzing tutorial. A GitHub Security Lab initiative - GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiativegithub.comFuzzing10..

공부/JUN STUDY 2022.09.15

PLT와 GOT 그리고 동적 라이브러리

PLT와 GOT가 무엇이고 어떤 점이 다른지 동적 라이브러리를 이용한 함수 호출 방법은 어떻게 되는지 알아보자. 라이브러리 : 함수를 모아놓은 파일 정적 라이브러리 : 내가 만든 프로그램에 라이브러리 함수를 직접 삽입 동적 라이브러리 : 메모리에 별도로 라이브러리 파일을 적재한 뒤 함수 주소를 찾아 사용 PLT : 동적 라이브러리를 이용할때 함수 주소를 찾아 실행시켜주는 테이블 GOT : 함수의 실제 주소를 기록해둔 테이블 하나씩 살펴보면 라이브러리 라이브러리란 여러개의 함수가 담겨있는 파일이다. 어렵게 생각하지말자. 그냥 우리가 쓰는 printf, malloc과 같은 함수가 정의되어있는 파일이다. 링크 내가 만든 프로그램에서 사용하는 라이브러리 함수를 실제 연결해주는 행위. 이때 심볼과 함수정의의 차이..

공부/JUN STUDY 2022.05.18

MOV와 LEA 어셈블리어 차이 그리고 []의 의미 (RAX와 [RAX]의 차이)

결론부터 이야기하면 mov는 값을 옮기는 어셈블리어 lea는 주소를 옮기는 어셈블리어 rax는 rax에 담긴 값 [rax]는 rax에 담긴 값을 주소로 보겠다. 라는 뜻이다. 아래 표를 완벽하게 이해하면 최고다. 1. mov rdi, rsi : rsi에 있는 값을 주소가 아니라 값으로 보고, rdi 레지스터에 값을 넣는다. 2. mov QWORD PTR[rdi], rsi : rsi에 있는 값을 주소가 아니라 값으로 보고, rdi 레지스터에 담겨있는 값을 주소로 보고, 해당 주소에 rsi에 담긴 값을 넣는다. 3. mov QWORD PTR[rdi+8*rcx], rsi : rsi에 있는 값을 주소가 아니라 값으로 보고, rdi값+8*rcx값을 주소로 보고, 해당 주소에 rsi에 담긴 값을 넣는다. [ ]의 ..

공부/JUN STUDY 2022.03.30

BSS vs 데이터 vs rodata (전역영역 이름 구분하기)

BSS / 데이터 / rodata 세그먼트 모두 전역변수/상수가 저장되는 위치이다. 일단 이거는 머리에 넣어두고 다만 어떤 전역변수/상수가 저장되느냐 인데, 이 글을 통해 살펴보자. 각 세그먼트마다 머리에 넣어두면 좋을 내용을 먼저 정리해보면 BSS 세그먼트 : 프로그램 시작시 모두 0으로 초기화됨 => 선언하고 초기화 하지않은 전역변수 데이터 세그먼트 : 프로그램 시작시 0으로 초기화 안됨 => 초기화된 전역변수/전역상수가 위치하는 영역. rodata 세그먼트 : 데이터 세그먼트 안에 수정 불가능한 영역 => 값이 변하면 안되는 데이터가 위치함. (문자열 / 전역상수) 자 조금만 생각해보자. 전역변수를 선언하고 초기화를 하지 않았으면 프로그램을 실행하는 도중에 변수에 값을 넣어주는 과정이 필연적으로 있..

공부/JUN STUDY 2022.03.30

메모리 vs 레지스터 (메모리가 있는데 레지스터 왜 또 쓸까?)

우선 메모리나 레지스터의 사용목적은 같다. 컴퓨터에 데이터를 저장하기위해 이건 머리에 박아놔야한다. 다만 좀 더 빠르고 효율적으로 데이터를 저장하고 사용하기위해 레지스터를 사용하는 것이고, 이에 대해 이론적으로 구체적으로 알고싶으면 컴퓨터구조 내지는 운영체제 과목의 메모리 계층(Memory Hierarchy) 개념을 공부하면 된다. 이 글은 포너블 내지는 프로그램 동적 디버깅을 할때 메모리랑 레지스터 헷갈리지 않기위해 적는 글이다. 우선 알아두면 좋을 전제들이 몇개있다. 1. 프로그램에서 데이터를 다루는 주체는 CPU이다. (따라서 프로그램 명령어. 그러니까 어셈블리어에 있는 데이터들은 다 CPU가 다루는거다.) 2. CPU가 데이터를 사용하기위해선 무조건 레지스터로 옮겨와야한다. (push / pop은..

공부/JUN STUDY 2022.03.30
728x90