본 글은 이전 글이었던 'https://veriperi-dazzle.tistory.com/258'의 CICD BlueGreen 배포 구현 과정을 이어서 작성해보고자 한다. 이번에는 EC2 설정에 앞서 VPC 설정 과정에 대해 알아보자. VPC 개념 간략히 정리본격적으로 VPC를 설정하기에 앞서, VPC가 무엇인지 간단하게 알아보자. VPC는 거미줄처럼 연결되어 있는 EC2 인스턴스들의 연결을 VPC라는 하나의 네트워크로 구성함으로써 각각의 인스턴스의 네트워크를 하나하나 설정해야하는 번거로움을 줄여줄 수 있다. 이렇게 설정된 각각의 VPC는 완전히 독립된 네트워크로 작동할 수 있다. 즉, VPC는 클라우드 환경을 퍼블릭과 프라이빗의 논리적으로 독립된 네트워크 영역으로 분리할 수 있게 해주는 역할을 한다. ..
분류 전체보기
DevOps Architecture본 실습은 위 아키텍처를 기반으로 구현되었다. 아키텍처에 따라 간단하게 흐름 정리를 하면 아래와 같이 설명할 수 있다. 개발자는 새로운 기능이나 수정된 코드를 작성하고 이를 Git 저장소(Git Repo)에 커밋한다.개발자가 커밋한 코드는 Git Repository에 저장된다. 해당 단계에서는 코드가 버전 관리 시스템을 통해 중앙 저장소에 올라가며, 이후 단계에서 빌드 및 배포에 사용된다.AWS CodeBuild는 Git 저장소에서 코드를 가져와 빌드 과정을 수행한다. 코드를 컴파일하고, 필요한 테스트를 수행하며, 최종 배포 가능한 아티팩트를 생성한다.빌드가 완료된 아티팩트는 S3 버킷에 저장된다.AWS CodeDeploy는 S3에 저장된 애플리케이션 아티팩트를 가져와 ..
우선, 해당 문제는 앞서 진행했던 시스템 해킹 스터디에 이어서 진행하는 문제로 rao.c 파일을 그대로 활용한다. 따라서 제공된 코드 파일의 경우 아래와 같다.📌 rao.c 코드#include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL);}int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0;} 위와 같이 작성한 rao 실행파일을 컴파일 ..
분석📌 실습 코드#include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL);}int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0;}(1) 취약점 분석▶ 프로그램의 취약점은 scanf("%s", buf)에 존재scanf 함수의 포맷 스트링 중 하나인 %s는 문자열을 입력받을 때 사용하는 것입력의 길이를 제한하지 않으며, 공백 문자인 띄어..
💡 스택 오버플로우와 스택 버퍼 오버 플로우의 차이점스택 영역은 실행중에 크기가 동적으로 확장될 수 있다. 그러나 한정된 크기의 메모리 안에서 스택이 무한히 확장될 수는 없다. 스택 오버플로우(Stack Overflow)는 스택 영역이 너무 많이 확장되어 발생하는 버그를 뜻한다.반면, 스택 버퍼 오버플로우는 스택에 위치한 버퍼에 버퍼의 크기보다 많은 데이터가 입력되어 발생하는 버그를 뜻한다. 용어가 비슷하여 혼동하기 쉽지만, 이 둘은 전혀 다른 의미를 가지고 있으므로 사용에 주의해야 한다.스택 버퍼 오버플로우(1) 버퍼 오버플로우: 스택의 버퍼에서 발생하는 오버플로우 ✅ 버퍼 - 데이터가 목적지로 이동되기 전에 보관되는 임시 저장소- 데이터의 처리속도가 다른 두 장치가 있을 때, 이 둘 사이에 오가는 ..
함수 호출 규약(1) 함수 호출 규약이란?함수 호출 규약은 함수의 호출 및 반환에 대한 약속이다. ✅ 함수 호출 과정1. 한 함수에서 다른 함수 호출 시, 프로그램 실행 흐름은 다른 함수로 이동2. 호출한 함수가 반환 시, 원래의 함수로 돌아와서 기존의 실행 흐름을 이어감 ✅ 함수 호출의 특징- 함수 호출 시, 반환된 이후를 위해 호출자의 상태, 반환 주소를 저장해야 함- 호출자는 피호출자가 요구하는 인자를 전달해줘야 하며, 피호출자의 실행 종료 시 반환 값을 전달받아야 함- 함수 호출 규약 적용은 컴파일러의 몫 (2) 함수 호출 규약의 종류[ x86 ]cdeclstdcallfastcallthiscall [ x86-64 ]System V AMD64 ABI의 Calling ConventionMS ABI의..