이론 (5) 썸네일형 리스트형 리눅스 프로세스 메모리 구조 및 여러 기초정보 (ORANG 참조 ) env , etc , argv , argc 또한 stack의 일부분임. kernel : 커널영역은 사용자의 접근을 못하도록 할당해 놓았다.OS의 시스템 코드가 로드되는 부분으로 우리가 건들 수 없다. Stack : 프로그램에서 사용되는 각종 환경변수 , 파라미터 , 리턴값 , 지역변수 등의 정보를 담고 있다. user space ( libc ) : 프로그램이 내부에서 사용하는 라이브러리 함수들과 관련된 공유라이브러리 파일이 적재되는 영역 Heap : 동적 할당되는 변수의 데이터가 위치하는 영역 Bss , Data : 프로그램에서 사용하는 전역변수 , 정적변수 등 각종 변수들이 실제로 위치하는 메모리 영역. 변수가 초기화되면 데이터 영역 , 초기화되지 않으면 bss 영역에 있다. 그리.. Buffer Overflow Basic 3 Buffer Overflow의 이해 버퍼란 , 시스템이 연산을 하는데 있어 필요한 데이터를 일시적으로 저장하는 저장공간을 말한다. 문자열을 처리하게 되면 문자열 버퍼가 되고 , 수열이라면 수열 버퍼가 되겠다.대부분의 프로그램에서는 이러한 버퍼를 스택에다 생성한다. 스택은 함수 내에서 선언한 지역 변수가 저장되고 함수가 끝나고나면 반환한다. BOF는 미리준비된 버퍼의 크기보다 큰 데이터를 쓸 때 발생하게 된다.만약 40byte 크기의 버퍼가 준비되어있는데 41~44byte를 사용하면 이전 함수의 bp를 수정하게 될 것이다. 더 나아가 45~48byte를 쓴다면 return address가 저장되어 있는 공간을 침범하게 될 것이다.따라서 BOF공격은 공격자가 메모리상의 임의의 위치에다 원하는 코드를 저장시켜.. Buffer Overflow Basic 2 이번엔 프로그램이 실행되면 프로세스가 메모리에 적재되고 메모리와 레지스터의 동작을 간단한 프로그램을 통해 확인해보자. 위와같은 간단한 소스를 짜고 컴파일 ( gcc -s )까지 하자.그 후 simple.c 프로그램이 컴파일 되어 실제 메모리상 어느위치에 존재하는지 확인해보기 위해 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴보자. ( 각자 실행 ) 살펴보면 function()함수가 아래에 자리잡고 main()함수는 위에 자리잡음을 확인할 수 있다.따라서 메모리 주소를 바탕으로 생성될 이 프로그램의 segment 모양은 다음과 같다.이 소스에는 전역변수를 지정하지 않았기 때문에 data segment에는 링크된 라이브러리의 전역변수값만 들어있을 것이다. 이제 프로그램.. 웹 기초 지식 1. WWW - World Wide Web의 약자로 세계규모의 거미집 또는 거미줄 이라는 뜻으로 , 인터넷상의 분산되어 있는 정보들이 연결되어 제공되는 인터넷 서비를 의미한다. - 줄여서 웹(Web) 이라고 칭한다. - WWW는 URL , HTTP , HTML의 구성요소로 이루어져 있다. 2. URL - Uniform Resource Locator 의 약어로 네트워크 상의 자원의 위치를 나타낸다. - Client , Web Server , Web Application , DataBase로 구성되어 있다. ex) http://sports.news.naver.com/sports/index.nhn?category=worldfootball 1 2 3 4 1) Client : 사용중인 프로토콜의 정보이다. 웹 서.. 운영체제 개요 보충 운영체제 : 컴퓨터의 사용자와 하드웨어 사이에서 중개자 역할을 해주는 프로그램 운영체제의 역사 : 수작업 -> 단일 프로그래밍 -> 다중 프로그래밍 & 시분할 -> 모바일 OS & 실시간 시스템 운영체제의 목적 : 1. 사용자가 컴퓨터를 편리하게 사용하는 것 2. 컴퓨터 하드웨어가 효율적으로 사용되는 것 컴퓨터 시스템의 처리 구조 USER↑ ↓Application ↑ ↓Operation System ↑ ↓Hardware 위와 같이 하드웨어 ( 컴퓨터 ) 와 사용자 사이에 개입하여 상호적으로 컴퓨터가 실행되는 동안 항상 수행되는 프로그램으로 이용을 돕는 역할의 Operation System 사용자의 관점에서 볼때 좋은 OS는 사용의 용이성 , 자원 이용의 극대화에 중점을 둔 OS라 할수있다.시스템의 관점에.. 이전 1 다음