system 11

[리눅스 프로그래밍 · DevOps] GitHub Actions로 C Signal Handling Demo CI/CD 구축기

전체 코드: suminworld-system-lab/signal-demo suminworld-system-lab/signal-demo at main · sumin-world/suminworld-system-labSystem programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-labgithub.com프로젝트 구성signal_demo.c는 다음 기능을 포함합니다:SIGINT/SIGTSTP 핸들링 (Ctrl+C, Ctrl+Z)SIGALRM 타이머 처리SIGUSR1/SIGUSR2 사용자 정의 시그널Job control 예제자동화 테스트 모드대화형 메뉴를 통해 각 기능을 실행하며 동작을 확인할 수 있습니다. ..

system 2025.09.18

🛡️SGI 서울보증 랜섬웨어 사건 정리 & 리눅스 백신 실습

https://m.boannews.com/html/detail.html?idx=139121 [SGI서울보증 랜섬웨어] 해킹 그룹 ‘건라’ SGI 매물 거뒀다... 데이터 해독 성공? 재협상?해킹 그룹 ‘건라’가 SGI서울보증에서 탈취한 데이터와 관련, 다크웹에 올렸던 게시물을 최근 삭제했다. 지난달 13.2 테라바이트(TB)에 달하는 대규모 데이터 탈취를 주장한 이후 한 달 만이다.m.boannews.com https://m.boannews.com/html/detail.html?idx=138356 [SGI서울보증 랜섬웨어] ‘건라’ 랜섬웨어 특징과 동작 원리 분석해보니최근 금융권을 공포에 몰아넣은 SGI서울보증 해킹 사태의 공격 주체 ‘건라’(Gunra) 랜섬웨어에 대해 자세히 분석한 보고서가 나와 관심..

system 2025.09.16

[Linux Signal] - 쉘, 프로세스 제어, 시그널 핸들링

리눅스 시그널 완전 정리 - 쉘과 프로세스 제어📖 목차시그널이란?쉘과 프로세스 관계Ctrl+C와 Ctrl+Z의 차이점운영체제 vs 개발자 역할시그널 처리 코드 분석시그널 전달 과정실제 동작 예시마무리1. 시그널이란?시그널은 프로세스 간 통신(IPC) 메커니즘 중 하나로 비동기적으로 프로세스에게 특정 이벤트를 알려주는 소프트웨어 인터럽트.쉽게 말하면 프로세스에게 "이런 일이 일어났으니 적절히 반응해!"라고 알려주는 메시지 시스템.2. 쉘과 프로세스 관계🔹 쉘 안의 프로세스들한 쉘에서 **앞에서 실행 중인 프로그램(포그라운드 프로세스)**는 보통 1개.예: ./a.out 실행하면 → 쉘이 자식 프로세스를 만들어서 그 프로그램 실행이때는 쉘이 잠시 대기 상태로 들어감 (포그라운드 프로세스가 끝날 때까지)하..

system 2025.09.14

[시스템 프로그래밍] myshell.c 코드 분석 - 2

https://github.com/sumin-world/suminworld-system-lab/tree/main/shell suminworld-system-lab/shell at main · sumin-world/suminworld-system-labSystem programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-labgithub.com전체 코드는 위에서 확인 가능합니다!Foreground / Background 프로세스와 시그널 처리Foreground (전경)현재 사용자와 상호작용하고 있는 프로그램키보드 입력을 받는 프로그램터미널에서 "지금 실행 중"인 상태Background (배경)뒤에서 조용히 ..

system 2025.09.12

[시스템 프로그래밍] myshell.c 코드 분석 - 1

suminworld-system-lab/shell at main · sumin-world/suminworld-system-labSystem programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-labgithub.com전체 코드는 위의 링크 들어가시면 확인 가능합니다!1. 파일 디스크립터 (File Descriptor)개념파일을 가리키는 번호표기본 할당0번 (STDIN_FILENO): 표준 입력 (키보드)1번 (STDOUT_FILENO): 표준 출력 (화면)2번 (STDERR_FILENO): 표준 에러 (에러 메시지용 화면)3번, 4번, 5번...: 프로그램이 열어서 사용하는 파일들터미널 제어 함수#in..

system 2025.09.11

[시스템 프로그래밍] Tiny Shell 프로젝트: 잡 컨트롤, 시그널, 레이스 컨디션 다루기

요약잡 컨트롤 안정화 + 백그라운드 완료 알림 + 인용/주석 토크나이저 개선 + 레이스/메모리 에러 내성프롬프트에 최근 종료 상태 표시, 변수 확장($VAR, $?), 파이프/리다이렉션 정상 동작 삽질기 요약해보았습니다(*´∀`) 전체 코드는 제 깃허브에 올려두었습니다! -> GitHub 레포지토리 suminworld-system-lab/shell at main · sumin-world/suminworld-system-labSystem programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-labgithub.com 🛠️ 빌드 & 실행gcc -Wall -Wextra -O2 -o myshell myshel..

system 2025.09.09

[시스템 프로그래밍] execve() 시스템 콜 C vs 어셈블리 비교 분석

execve() 시스템 콜을 C 언어와 어셈블리 두 가지 방식으로 구현해보고, 각각의 차이점과 동작 원리를 자세히 분석한 내용 정리.같은 기능을 하는 코드가 어떻게 다르게 구현되는지, 그리고 시스템 콜이 실제로 어떻게 작동하는지 확인.💡 참고이 코드는 학습용 예제입니다.실제로 실행하면 셸이 바로 뜨므로, 반드시 승인된 실습 환경(로컬 VM, CTF 문제 등)에서만 실행하세요.C 언어 구현#include int main() { char *const argv[] = { "/bin/sh", NULL }; // 인자 리스트 char *const envp[] = { NULL }; // 환경변수 없음 execve("/bin/sh", argv, envp); _exit(1..

system 2025.09.08

[시스템 프로그래밍] execve() 시스템 콜로 이해하는 프로세스 교체 원리

오늘은 fork()와 함께 사용되는 또 다른 핵심 시스템 콜인 execve()- execve()는 현재 프로세스를 완전히 다른 프로그램으로 바꿔버리는 강력한 기능으로, 유닉스/리눅스 시스템에서 새로운 프로그램을 실행하는 핵심 메커니즘execve() 시스템 콜이란?execve()는 현재 실행 중인 프로세스를 완전히 다른 프로그램으로 교체하는 시스템 콜출처: linux-in-practice GitHub 위의 소스코드를 분석한 내용을 정리하였습니다!예제 코드 분석#include #include #include #include static void child(){ char *args[] = { "/bin/echo", "hello" , NULL}; printf("I'm child! my pid is %..

system 2025.09.08

[시스템 프로그래밍] fork() 시스템 콜로 이해하는 프로세스 복제 원리

유닉스/리눅스 시스템에서 새로운 프로세스를 생성하는 핵심 메커니즘인 fork() 시스템 콜- fork()는 단순해 보이지만 매우 강력한 기능이며, 쉘, 웹서버, 데이터베이스 등 많은 시스템 소프트웨어의 핵심 프로세스란?프로세스 = 실행 중인 프로그램프로그램 파일(fork) ≠ 프로세스(실행 중인 상태)각 프로세스는 고유한 PID(Process ID)를 가짐메모리 공간, 레지스터, 파일 디스크립터 등을 독립적으로 소유출처: linux-in-practice GitHub 위의 코드를 기반으로 공부한 내용을 정리하였습니다!fork() 예제 코드 분석#include #include #include #include static void child(){ printf("I'm child! my pid is %d.\n"..

system 2025.09.08

[시스템 보안] 버퍼 오버플로우

시스템 보안에서 가장 기본이 되는 버퍼 오버플로우(Buffer Overflow) 취약점- 버퍼 오버플로우는 오래된 취약점이지만, 여전히 많은 시스템에서 발견되고 있으며 다른 고급 공격의 기반이 되는 중요한 개념목차버퍼 오버플로우란?스택 메모리 구조메모리 정렬과 패딩취약점 발생 원리실습: 간단한 BOF현대적 보호 기법들그 외실전 도구들버퍼 오버플로우란?**버퍼 오버플로우(Buffer Overflow)**는 프로그램이 할당된 메모리 영역을 넘어서 데이터를 쓸 때 발생하는 취약점왜 위험한가?메모리 손상: 인접한 데이터 덮어쓰기코드 실행: 공격자가 원하는 코드 실행권한 상승: 시스템 권한 획득 가능간단한 예시#include #include void vulnerable_function() { char buf..

system 2025.09.08