총 13개
-
HackerSchool FTZ 레벨별 상세 풀이 및 보안 공격 기법2025.11.161. 버퍼 오버플로우(Buffer Overflow) 공격 버퍼 오버플로우는 할당된 메모리 크기보다 큰 데이터를 입력하여 인접한 메모리를 덮어쓰는 공격 기법입니다. FTZ 레벨 9-19에서 주로 다루어지며, strcpy, gets, fgets 등의 위험한 함수를 통해 발생합니다. 공격자는 스택의 반환 주소(RET)를 조작하여 임의의 코드를 실행하거나 쉘을 획득할 수 있습니다. 메모리 구조 분석과 쉘 코드 삽입을 통해 권한 상승을 달성합니다. 2. Return-to-Library(RTL) 공격 및 함수 체이닝 RTL 공격은 버퍼 오버플...2025.11.16
-
소프트웨어 개발 보안 취약점 유형 분석2025.11.181. 소프트웨어 개발 보안 취약점의 7가지 유형 행정안전부에서 제시하는 소프트웨어 개발 보안 취약점은 총 7개 영역 49개 항목으로 구성됩니다. 입력데이터 검증 및 표현, 보안기능, 시간 및 상태, 에러처리, 코드오류, 캡슐화, API 오용이 주요 취약점 유형입니다. 각 유형별로 XSS, SQL삽입, 버퍼 오버플로우, 부적절한 인가, 하드코드된 패스워드, 취약한 암호화 알고리즘 등 구체적인 보안 이슈가 발생할 수 있습니다. 2. 입력데이터 검증 및 표현 소프트웨어 개발자가 프로그램 입력값에 대한 검증을 누락하거나 부적절하게 검증할 ...2025.11.18
-
시스템 프로그램 어택랩(attack lab) 과제 보고서2025.05.081. Phase_1 Phase_1에서는 getbuf 함수에 오버플로우가 일어날 값을 입력하고 touch1의 주소값을 입력하여 touch1이 실행되게 한다. asm.txt 파일을 확인하여 getbuf와 touch1의 어셈블리 코드를 찾아 필요한 값을 입력한다. 2. Phase_2 Phase_2에서는 touch2 함수를 실행하기 위해 rdi 레지스터에 cookie 값을 넣어주고 touch2 함수로 이동하는 코드를 삽입한다. 이를 위해 gdb를 실행하여 getbuf 직전의 rdi 값을 확인하고, buffer.s 파일을 작성하여 필요한 값...2025.05.08
-
컴퓨터에서 숫자 표현과 중앙처리장치 동작 원리2025.05.111. 보수의 개념 보수(Complement)는 '보충을 해주는 수'라는 의미로 컴퓨터가 뺄셈을 할 때 사용되는 개념입니다. 보수는 2의 보수와 1의 보수로 나뉩니다. 2의 보수는 어떤 수의 1의 보수에 1을 더한 값이며, 1의 보수는 비트를 반전시킨 값입니다. 보수는 컴퓨터에서 음수를 표현하거나 덧셈과 뺄셈 연산 등에서 사용됩니다. 2. 보수체계 사용 이유 보수체계는 컴퓨터에서 수의 표현과 연산을 보다 효율적으로 처리할 수 있도록 도와줍니다. 컴퓨터는 연산체계에서 덧셈기능만 할 수 있는데, 보수를 이용하면 뺄셈도 수행할 수 있습니다...2025.05.11
-
C언어 성적 처리 프로그램 실습2025.11.131. C언어 포인터와 배열 프로그램에서 포인터를 활용하여 2차원 배열의 행과 열에 접근합니다. ps 포인터는 점수 테이블의 특정 행을 가리키고, pa 포인터는 평균값 배열을 가리킵니다. 포인터 연산(ps+j)을 통해 배열 요소에 접근하고 값을 저장하는 방식으로 동적 메모리 접근을 구현합니다. 2. 데이터 입출력 처리 scanf 함수로 5명 학생의 국어, 영어, 수학 성적을 입력받고, printf 함수로 형식화된 출력을 수행합니다. fflush(stdin)으로 입력 버퍼를 비우고, %10s, %10d, %10.2f 등의 형식 지정자를...2025.11.13
-
파이썬 while문으로 3의 배수 찾기2025.11.141. 스택 변수 (Stack Variables) 스택 변수는 간단한 데이터 유형 및 함수 호출에 주로 사용되며, 스택 메모리 영역에 할당됩니다. 함수가 호출될 때 생성되고 함수가 종료되면 자동으로 소멸합니다. 메모리 관리가 자동으로 이루어지므로 프로그래머가 명시적으로 메모리를 할당하거나 해제할 필요가 없습니다. 2. 힙 변수 (Heap Variables) 힙 변수는 동적 메모리 할당을 통해 생성되며, 필요한 만큼 메모리를 할당하고 사용자가 직접 관리해야 합니다. 주로 크기가 런타임에 결정되는 데이터 구조나 긴 수명을 가지는 객체에 ...2025.11.14
-
데이터 전송의 제어 절차 5단계2025.11.171. 흐름 제어 (Flow Control) 데이터 전송의 첫 단계로, 송신측이 데이터를 전송하는 속도를 수신측이 처리할 수 있는 속도에 맞춰주는 역할을 한다. 정지-대기(Stop-and-Wait)와 슬라이딩 윈도우(Sliding Window) 두 가지 주요 기술이 사용되며, 슬라이딩 윈도우는 여러 패킷을 연속적으로 보낼 수 있어 전송 효율성이 높다. 2. 오류 제어 (Error Control) 데이터 패킷 전송 과정에서 발생하는 오류를 감지하고 복구하는 절차이다. 패리티 비트, 체크섬, CRC 등의 오류 감지 기법을 사용하여 오류를...2025.11.17
-
데이터 전송의 제어 절차 5단계2025.11.171. 데이터 전송의 제어 데이터 전송의 제어는 물리적 연결에서 전송 링크 상에 발생하는 다양한 문제를 제어하는 것으로, 전송된 데이터의 동기화 문제, 송수신기 간의 흐름 속도 차이, 오류 등을 해결하기 위해 필요하다. 데이터 링크 계층에서 수행하는 제어 기능에는 회선 제어, 흐름 제어, 오류 제어가 있으며, 이를 통해 장치들 간의 링크 관리와 데이터 전송의 안정성을 보장한다. 2. 데이터 전송의 제어 절차 5단계 교환망을 이용하는 경우 데이터 전송의 제어 절차는 5단계로 진행된다. 첫째, 회선 연결 단계에서 통신 회선과 단말기를 물...2025.11.17
-
C언어 판매실적 보고서 생성 프로그램2025.11.151. 2차원 배열과 데이터 처리 C언어에서 2차원 배열을 이용하여 5명 직원의 4분기 판매 실적 데이터를 저장하고 관리합니다. 배열의 각 행은 직원을, 각 열은 분기를 나타내며, 이를 통해 개인별 총합, 분기별 총합, 분기별 평균 등 다양한 통계 데이터를 계산할 수 있습니다. 반복문을 활용하여 효율적으로 데이터를 입력받고 처리합니다. 2. 통계 계산 및 데이터 분석 판매 실적 데이터를 기반으로 개인별 총합, 분기별 총합, 년 총합, 분기별 평균, 년 평균 등을 계산합니다. 소수점 2자리까지 반올림하여 정확한 평균값을 구하고, 이러한...2025.11.15
-
C언어 이메일 주소 변환 프로그램2025.11.161. 문자열 파싱 및 토큰화 C언어의 strtok() 함수를 사용하여 이메일 주소를 '@'와 '.' 구분자로 분리하거나, 사용자 입력을 공백으로 구분하여 각 요소별로 분석하는 문자열 처리 기법입니다. 이를 통해 이메일 주소의 구성 요소인 이름, 시스템, 도메인, 기관, 국가 정보를 추출하거나 역으로 조합하여 이메일 주소를 생성합니다. 2. 메뉴 기반 프로그램 구조 사용자가 선택한 메뉴에 따라 서로 다른 기능을 수행하는 조건문 기반의 프로그램 설계입니다. 메뉴 1은 이메일 주소를 입력받아 각 요소로 분리하고, 메뉴 2는 각 요소를 입...2025.11.16
