728x90
반응형

JMop 383

[Security/BOF] [펌]shell code(쉘 코드) 만드는법

출처 : http://research.hackerschool.org/Datas/Research_Lecture/sc_making.txt* 쉘코드 만들기 강좌 "\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x1f\x5e\x89\x76\x08\x31\xc0 \x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80 \x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh" 프로그램의 취약점으로 인해 리턴 어드레스를 변경할 수 있을 때, 보통은 위과 같은 "쉘코드"를 실행하여 높은 권한을 획득한다. 이러한 쉘코드는 어떤 과정으로 만들어지는 것일까? 이제부터 그 방..

Programming 2014.03.30

[Security] Stack fream

stack frame에 대해 정리해 보겠다. 먼저 하나의 프로세스를 생성하게 되면 메모리를 아래와 같이 관리 한다. Code : CPU가 처리할 코드가 올라가는 메모리 영역이다. 실행하면 여기서 하나씩 가져가면서 실행을 하게 된다. 프로그램 실행시 메모리에 올라가서 종료떄 해제된다. Data : 프로그래밍시 전역변수등이 올라가는 메모리 영역으로 프로그램 실행시 메모리에 올라가서 종료때 해제된다. Stack : 지역변수, 매개변수 등이 상주하게 되는 메모리 영역이다. 필요시 메모리에 올리고 사용후 제거 하면서 메모리를 활용적으로 사용할 수 있게 된다. Heap : 사용자 영역 메모리라고 불리는 이곳은 사용자가 원할떄 메모리를 할당하며 원할때 해지할 수 있는 메모리 영역이다. C언어에서 malloc, fre..

Programming 2014.03.29

[OS] os architecture

OS의 architecture는 5가지로 나눌수 있다. - simple structure - Layered - Microkernel - Module - Hybrid systems하나씩 정리를 하면... 1. simple structuresimple structure은 모든 커널을 메인 메모리에 올리는 방식이다. 대표적인 예로 MS-DOS, 초기 UNIX가 있다. 하지만 MS-DOS와 UNIX는 커널 내부적으로 구조가 다르기 때문에 simple structure을 두 가지(simple structure, non simple structure)로 나누어서 정리하겠다.MS-DOS(simple structure) : MS-DOS는 인터페이스와 기능 계층이 잘 분리되어 있지 않다. 이러한 구조는 보안을 취약하게 ..

Programming 2014.03.27

[OS] Multiprogramming

Multiprogramming(다중 프로그래밍) CPU의 이용률을 극대화 하기 위한 방법이다. 이 방법이 나오기 이전에는 하나의 프로그램만 사용이 가능했으나 Multiprogramming 기법이 나오고 나서는 여러가지 프로그램을 한번에 돌릴 수 있다. 이전에 하나의 프로그램만 실행 할 때에는 입출력 요구가 발생하면 처리가 완료될 때까지 CPU는 휴면상태가 된다. 이러한 휴면시간을 활용하기 위해셔 여러개의 프로그램을 메모리 상에 적재시키고, 하나의 프로그램이 입출역 처리를 기다리는 상태가 되면 CPU는 다른 프로그램을 처리하도록 전환된다. 장점 : - 여러개의 프로그램이 동시에 처리하는 효과를 얻을 수 있다.- 컴퓨터 시스템에서 단위 시간당 처리되는 프로그램의 수가 증가한다. 즉 처리율이 높다. 단점 : ..

Programming 2014.03.16

[Security] Register

Register?레지스터는 CPU 내부에 존재하는 다목적 저장공간이다. CPU가 연산하기 위한 데이터를 저장하며 흔히 메인 메모리라고 하는 램(RAM)과는 달리 CPU와 한 몸으로 있기 때문에 고속 연산이 가능하다. IA-32(Intel Architecture 32 bit)의 레지스터 IA-32은 많은 종류의 레지스터가 있다. Basic program execution register- General Purpose Register(32bit - 8개)- Segment Register(16bit - 6개)- Program Status and Control Register(32bit - 1개)- Instruction Pointer(32bit - 1개) 1) General Purpose Register(범용 ..

Programming 2014.03.14

[OS] OS의 의미와 역할

OS - Operating SystemOS(컴퓨터 운영체제) 우리가 사용하는 컴퓨터에 설치되어 있는 소프트웨어이다. 하지만 정말 중요한 역활을 한다. 우리가 주로 사용하는 OS는 WIndows이며 이외에도 Linux, Unix, ios등 여러가지가 있다. OS의 역할은 다음의 종류가 있다.- 사용자와 컴퓨터 시스템간의 인터페이스 정의- 자원(resurce)관리 - Device를 사용- I/O Control 컴퓨터의 구조는 위의 이미지처럼 되어 있다고 볼 수 있다. Hardware에는 CPU, Memory, I/O Bus 등등이 있다. 우리가 컴퓨터를 사용할 때 이런 하드웨어 장치는 생각하지 않고 사용을 한다. 그렇게 가능하게 하는것이 OS이다. OS에서 가장 중요한 2가지 역할이 있다.Resurce al..

Programming 2014.03.06

[Algorithm] Lake Counting(POJ No.2386)

Lake Counting(POJ No.2386) 문제 : 크기가 N X M인 정원이 있다. 그 곳에 비가내려 물 웅덩이가 생겼다. 물 웅덩이는 주위(8군데)가 근접하여 있으면 서로 연결되어 있다고 간주한다 . 즉 하나의물 웅덩이로 간주한다. 전부 몇개의 물 웅덩이가 있는지 계산하는 알고리즘을 작성하라. 예시 : * * ** W ** * *와 같이 *이 있는 8방향에 W가 있다면 하나의 물 웅덩이로 생각한다. N X M 의 필드를 만들어서 초기화 한다. 그리고 초기화 값을 출력한다. 필드에서 물 웅덩이(W)를 찾는다. 찾을시 dfs 함수를 호출한다. dfs 함수가 호출 되면 'W'를 '.'으로 초기화 시키며 해당 배열값을 중심으로 8방향을 검사한다. 검사중 'W'가 존재 한다면 다시 dfs 함수를 호출한다..

Programming 2014.02.18

[JAVA] JAVA static 정리

자바에서 자주 사용하는 static 키워드 정리 4가지!! 1. static 키워드는 인스턴트를 생성하지 않아도 사용할 수 있다. static이 붙은 맴버변수와 클래스 변수는 클래스가 메모리에 올라갈때 메모리 할당을 하기 때문에 인스턴스를 따로 생성 하지 않다도 사용이 가능하다. 2. 클래스 설계시 맴버변수 중에서 모든 인스턴스들이 공통적으로 사용해야 하는 것에 static을 붙인다. 인스턴스 생성시 각 인스턴스들은 서로 독립적이기 때문에 맴버 번수가 서로 다른 값을 유지한다. 하지만 static으로 선언한 맴버 변수는 인스턴스끼리 공유하기 때문에 공통적으로 값이 유지되어야 하는 경우 static을 붙인다. 3. static이 붙은 메서드에서는 인스턴스 변수를 사용할 수 없다. static이 붙은 메서드..

Programming 2014.02.10
728x90
반응형