NCS보안3기2017. 3. 14. 16:39

시스템 해킹을 위한 사전지식

1. 진법(2진수, 10진수,  16진수)변환과 논리연산, ASCII

2. Big Endian, Little Endian

3. CPU, RAM, HDD에서 프로그램의 실행 동작

4. VI Editor

5. C언어

6. 어셈블리어


기본적으로 외워두면 좋은 ASCII Code

A

0x41 

0x61 

0x30 

null 

0x00 

space

0x20

carriage return 

0x0D  

 line feed 

 0x0A


논리연산

AND - 둘 다 참이어야 참( subnet )

OR - 하나라도 참이면 참 ( flag )

XOR - 같으면 0 다르면 1 ( 초기화, 암호화 )


XOR 사용 ( 암호화 )

ABC == 0x414243

KEY == 0x4B4559


ABC xor KEY = 0xA071A

0xA071A xor KEY = ABC


컴퓨터의 구조와 동작

컴퓨터는 기본적으로 CPU, RAM, HDD로 구성되어 있다.

CPU는 실제 연산을 처리하는 컴퓨터의 '머리' 부분이라고 볼 수 있다. 

CPU에는 레지스터라는 저장소가 있는데 CPU가 연산을 하는데 필요한 값을 저장하는 용도로 사용되며 RAM보다 빠르다.

RAM(Random Access Memory)는 휘발성 저장장치다.

HDD에 저장되어 있는 프로그램을 실행하게 되면 그 프로그램은 RAM에 올라가게 된다.

여러 프로그램이 동시에 RAM에 올라가더라도 페이징, 세그먼테이션 기법을 이용하여 가상 메모리를 사용함으로써 

프로세스간 독립적인 메모리 공간을 확보한다.

컴퓨터의 전원이 나가면 RAM에 저장되어 있던 데이터들은 사라진다.

RAM은 주소를 알면 참조할 수 있기 때문에 물리적으로 접근하는 HDD보다 속도가 빠르다.

HDD는 비휘발성 저장장치이기 때문에 컴퓨터의 전원이 없어도 데이터를 저장할 수 있다.

HDD는 LP판처럼 주소를 하나하나 찾아가기 때문에 느리다.


Endian

단어를 형성하는 2진 바이트에서 저장하는 바이트의 순서를 나타내는 방법으로 Big Endian과 Little Endian으로 나뉜다.

Big Endian

- 데이터를 앞에서부터 채워 넣는다. 즉, 낮은 주소에서 높은 주소로 저장한다.

- Network, Sun, ARM 등에서 사용하는 Endian

- High Order Byte


Little Endian

- 데이터를 뒤에서부터 채워 넣는다. 즉, 높은 주소에서 낮은 주소로 저장한다.

- Intel x86 series

- Low Order Byte


0xDEADBEEF, 0x41424344, 0xCAFEBABE, 0x12345678

Q. 위 데이터를 Little Endian으로 저장할 경우와 Big Endian으로 저장할 경우

Little Endian 

0xEFBEADDE 

0x44434241 

0xBEBAFECA 

0x78563412 

Big Endian 

0xDEADBEEF 

0x41424344 

0xCAFEBABE 

0x12345678 

'NCS보안3기' 카테고리의 다른 글

리눅스 명령어  (0) 2017.03.14
우분투 리눅스  (0) 2017.03.14
Posted by Imp3rio