기본 명령어 · su : Switch User · sudo : SuperUser DO sudo [명령어] : superuser 권한으로 명령어 실행 설치 및 파일 수정할 때 superuser 권한이 필요 · sudo su : superuser 계정으로 전환 · whoami : 현재 사용자 확인 · exit : superuser 계정이었다면 이전의 계정으로 이동 · pwd : Print Working Directory, 현재 위치한 디렉토리를 보여줌 · sudo apt-get install [설치할 프로그램명] superuser 권한으로 설치 터미널 켰을 때나 설치 후에 한 번씩 sudo apt-get update 해주기 자매품으로 sudo apt-get upgrade도 있음 · cd : Change Di..
David Wheeler는 EDSAC를 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안했다. 어셈블러 : 개발자들이 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환해줌. 역어셈블러 : 기계어를 어셈블리 언어로 번역해줌. 1. 어셈블리 언어 (Assembly Language)와 x86-64 어셈블리 언어 (Assembly Language) : 컴퓨터의 기계어와 치환되는 언어. 기계어도 여러 종류가 있기 때문에 어셈블리어도 여러 종류가 있다. x64 어셈블리 언어 x64 어셈블리 언어는 동사에 해당하는 명령어(Operation Code, Opcode)와 목적어에 해당하는 피연산자(Operand)로 구성된다. 명령어 명령 코드 ..
메모리 오염 CPU의 동작과 메모리 사이에는 밀접한 연관이 있다. 만약 공격자가 메모리를 악의적으로 조작할 수 있다면 조작된 메모리 값에 의해 CPU도 잘못된 동작을 할 수 있다. 이를 메모리가 오염됐다고 표현하며, 이를 유발하는 취약점을 메모리 오염(Memory Corruption) 취약점이라고 부른다. 시스템 해킹에 다양한 공격기법들이 있지만, 많은 공격기법이 메모리 오염을 기반으로 하고 있다. 1. 세그먼트 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트(Segment) 로 구분한다. 세그먼트란 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것인데, 크게 코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 그리고 스택 세그먼트로 구분한다. 운영체제가 메모리를 용도별로 나누면,..
1. 컴퓨터 구조 (Computer Architecture): 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법. 컴퓨터의 가능 구조에 대한 설계, 명령어 집합 구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함된다. - 컴퓨터의 기능 구조에 대한 설계: 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고 설계하는 분야. 대표적으로 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조가 있다. - 명령어 집합구조(Instruction Set Architecture): CPU의 명령어에 대한 설계. CPU가 처리해야하는 명령어를 설계하는 분야. 대표적으로 ARM, MIPS, AVR, 인텔의 x86 및 ..