시스템 보안

반응형
시스템 보안/시스템 해킹

[시스템 해킹] Buffer OverFlow 공격 (BOF, 버퍼 오버플로우)

[시스템 해킹] Buffer OverFlow 공격 (BOF, 버퍼 오버플로우) Buffor Overflow는 길이값 검증을 제대로 하지 않아서 할당된 메모리 공간을 넘어서 다른 메모리까지 덮어쓸 수 있는 취약점이다. 줄여 BOF라고 부른다. Buffer Overflow의 개념 - 버퍼 오버플로우 공격은 데이터 길이에 대한 불명확한 정의를 악용해서 덮어쓸 때 발생 - 버퍼 오버 플로우의 종류 : 1) Stack Buffer Overflow : 스택 구조 상 할당된 버퍼들이 정의된 버퍼의 한계치를 넘는 경우 복귀 주소를 변경하여 공격자가 임의의 코드를 수행하도록 하는 공격 2) Heap Buffer Overflow : 힙 구조 상, 최초 정의된 힙 메모리 사이즈를 초과하는 문자열들이 힙 버퍼에 할당될 때, ..

시스템 보안/시스템 해킹

[시스템 해킹] 스택 프레임(Stack Frame)

스택 프레임(Stack Frame) 스택 프레임(Stack Frame)은 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위해 생성되는 공간이다. 스택 프레임에는 함수와 관련된 지역변수, 매개변수가 저장되고, 함수 호출 시 할당되고, 함수 종료 시 소멸된다. 스택프레임에 대해서 이해하기 위해서, caller와 callee를 알아야 하는데, caller는 호출한 함수이고, callee는 호출을 받은 함수이다. 예시로 코드를 하나 작성했는데, 여기서 main이 caller이고, func이 callee이다. #include void func(int a, int b){ int arg1 = a; int arg2 = b; printf("arg1:%d, arg2:%d\n",arg1, arg2); printf("..

시스템 보안/시스템 해킹

[시스템 해킹] 메모리 구조, 레지스터 종류

[시스템 해킹] 메모리 구조, 레지스터 종류 Buffer Overflow 공격을 알기전에 알아야할 내용입니다. 메모리 구조, CPU 레지스터 종류에 대한 내용입니다. 해당 내용은 달고나님의 문서를 참고해서 작성했습니다. 메모리 구조 1. 커널(운영체제에 필요한 기본 명령어 집합이 있음.)을 메모리에 적재 → 가용 메모리 영역(32bit : 0~2^32-1, 64bit : 0~2^64-1)을 확인 2. 하나의 프로세스 = 하나의 프로그램이 실행되기 위한 메모리 구조. - 하나의 프로세스를 실행시키면 👉 segment라는 단위로 묶어 가용 메모리 영역에 저장. - 하나의 segment 구조 : stack - data - code - 최대 segment 개수 : 16,383개 - 최대 segment 크기 : ..

시스템 보안/시스템 해킹

[시스템 해킹] 쉘코드 모음

[시스템 해킹] 쉘코드 모음 pwnable 풀때 쉘코드가 필요한 경우가 많아서 구글링을 통해서 모은 쉘코드들이다. 1. 24bytes \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 2. 25bytes \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 3. 26bytes \x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x8..

시스템 보안/시스템 해킹

[시스템 해킹] Format String Bug (FSB, 포맷 스트링 공격)

[시스템 해킹] Format String Bug (FSB, 포맷 스트링 공격) ※ 공부 목적으로 작성했습니다. 악용하지 마세요 포맷 스트링 공격은 '데이터의 형태에 대한 불명확한 정의'로 인해 발생한다. 버퍼 오버플로우 공격처럼 RET 값을 변조하여 임의의 코드 실행을 가능하도록 한다. * 참고 : 버퍼 오버플로우는 데이터 길이에 대한 불명확한 정의에 의해 발생 포맷 스트링은 C언어에서 입출력 함수의 포맷 문자열 처리하는 부분이다. 파라미터 설명 %d 정수형 10진수 상수 (integer) %f 실수형 상수 (float) %lf 실수형 상수 (double) %s 문자 스트링 ((const) (unsigned) char *) %u 양의 정수 (10진수) %o 양의 정수 (8진수) %x 양의 정수 (16진수..

시스템 보안/시스템 해킹

main 함수 인자

main 함수 인자 1. 인자 없을 때 main() ; 인자없음 2. 인자 있을 때 : argc, argv 1) argc : 인자 개수 2) argv : 실제 인자 문자열 argv[0] : 파일명을 포함한 실행경로 argv[1] : 인자1 argv[2] : 인자2 ※ argv들의 구분자는 공백 #include int main(int argc, char *argv[]){ printf("argc=%d\n", argc); for(int i=0;i

시스템 보안/유닉스 및 리눅스

[리눅스] CentOS 7 버전에서 root 비번 분실 시 조치 방법

[리눅스] CentOS 7 버전에서 root 비번 분실 시 조치 방법 CentOS 6의 Single모드로 변경하는 것과 달라서 추가합니다. 1. 부팅 후 커널 선택 화면에서 방향키를 눌러서 화면을 멈춘 후 'e' 버튼을 누른다 2. 화면에서 'ro', 'rhgb quiet' 부분을 찾는다 3. 'ro'를 'rw'로 바꾸고, 'rhgb quiet'는 'init=/bin/bash'로 바꾼다 4. CTRL - X 버튼을 눌러서 나온다 5. 부팅이 끝나면 로그인 프롬프트 없이 쉘화면이 나온다. 6. passwd 명령어로 비번을 변경한다. CentOS가 한글버전이여서 그런지 글자가 깨졌지만 비밀번호만 맞게 치면된다. 한글을 안깨지게 하려면 3번에서 LANG을 en_US.UTF-8로 바꾸면된다. 7. 비밀번호 변경..

시스템 보안/유닉스 및 리눅스

[유닉스/리눅스] SSH 원격 접속 IP 허용/차단하는 방법

[유닉스/리눅스] SSH 원격 접속 IP 허용/차단하는 방법 IP 허용 파일 : /etc/hosts.allow IP 차단 파일 : /etc/hosts.deny 특정 IP만 허용하기 위해서는 먼저 ALL로 차단을 한 다음에 허용할 IP를 넣으면 된다. 차단 : /etc/hosts.deny sshd:ALL sshd:차단할 IP 모두 설정한 후에 sshd 서비스를 재시작해준다. $ systemctl restart sshd 원격 접속을 시도하면 접속이 되지 않는다. 허용 : /etc/hosts.allow sshd:허용할IP sshd:허용할 IP대역 모두 설정한 후에 sshd 서비스를 재시작해준다. $ systemctl restart sshd * 미리 hosts.deny에서 sshd:ALL로 설정하고 hosts...

반응형
제나나
'시스템 보안' 카테고리의 글 목록