전체 글

PS + hacking
· Study/OS
Mode Switch 현재 수행중인 프로세스를 교체하지 않고 수행중인 상태를 변화시키는 것 system call / exception -> 프로세스 관련 O - kernel: process context에 위치 interrupt -> 프로세스 관련 X - kernel: interrupt context에 위치 각각의 프로세스는 user, kernel stack이 존재 -> kernel은 user stack에 관계없이 실행 가능 When to Switch Process 1) Process switch 2) Interrupt -> time slice에 의한 timer interrupt -> blocked -> ready로 가는 경우 higher priority process인 경우 교체 3) Exception..
· Study/OS
Programm vs Process - program: passive entry stored on disk (binary sequence) - process: active entity (executin sequence) / 메모리에 올라온 상태 Process Control Block (PCB) - OS에서 가장 중요한 자료 구조 - OS에서 프로세스에 필요한 정보가 포함 - 인터럽트가 발생하고 수행되었을 때 마치 발생하지 않은 것처럼 다음 프로세스를 수행하기 위한 목적 - PC, processor register (context switch)는 PCB에 저장됨. - process마다 존재 1) Process Identification: PID 2) Processor State Information: St..
· Study/OS
OS Objectives 1) Convenience: 편리성 2) Efficiency: 효율성 3) Ability to evolve: 발전 가능성 Role of OS - User / Computer Interface - I/O device control, file management, program create 등을 도움 - 자원 관리자 Evolution of OS OS에 필요한 서비스에 의해 하드웨어에 추가되기도 함 Serial Processing: 순차 처리 - No OS 1) 수동으로 카드 로드 2) Job to Job Transition - 모든 활동이 순차적 Problems 1) High Setup Time -> 준비 시간이 길었다. 2) Scheduling time -> 현대 CPU 스케줄링이..
· Study/OS
Memory: Stores data and programs 1) Capacity (용량) 2) Cost (per bit) (비용) 3) Access time (속도) modern 1) Smaller, more expensive, fast -> SRAM 2) Larger, cheaper, slower -> DRAM Memory Hierarchy 빠른 것을 CPU 근처에 (SRAM) -> 하위 계층까지 접근하지 않도록 발전 -> 상위계층 극대화, 하위계층 최소 Locality of reference : 참조의 지역성 / 지역성의 원리 - 프로그램은 상대적으로 적은 부분의 주소를 접근하려는 경향이 있다. - 이 부분은 프로그램이 실행될 때마다 변한다. 1) Temporal locality (locality i..
· Study/OS
Basic component: CPU, I/O module, bus, memory Evolution of processor -> 폰 노이만 구조의 한계를 벗어나지 못함 실행 시 메모리에 적재되어야하는데, 버스가 너무 많이 실행됨 Memory Static RAM -> Cache : 6 transistor, Expensive, high speed, no fresh required Dynamic RAM -> Main Memory : one transistor + one capacitor, slower than SRAM, dynamic refresh required Heterogeneous Memory 1) Load and Execute -> 자주 쓰이는 모델 / hot, cool data 사용 2) Direc..
cherry Cherry Description 주어진 바이너리와 소스 코드를 분석하여 익스플로잇하고 플래그를 획득하세요! 플래그는 flag.txt 파일에 있습니다. 플래그의 형식은 DH{...} 입니다. dreamhack.io 문제 보호 기법을 확인해보니 카나리도 없고 PIE도 적용되어 있지 않는 것을 확인할 수 있다. 소스코드를 읽어보니 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 void flag() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main(int argc, char *argv[]) { int stdin_fd = 0; int s..
mmapped mmapped Description 프로그램의 취약점을 찾고 익스플로잇하여 플래그를 출력하세요. 플래그는 ./flag 파일에 위치합니다. 플래그의 형식은 DH{...} 입니다. dreamhack.io 문제 먼저 바이너리 파일에 걸려있는 보호기법을 알아보았다. 일단 카나리를 제외한 보호기법이 걸려있는 것으로 보아 스택 오버플로우를 일으키는 문제일 수 있겠다고 생각했다. 그래서 소스코드를 읽어보니, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #define FLAG_SIZE = 0x45 int main(int argc, char *argv[]) { int len; char * fake..
basic_rop_x86 basic_rop_x86 Description 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일 dreamhack.io 문제 basic_rop_x86 위의 문제와 똑같으나 아키텍처 환경만 다른 문제이다. 64비트 환경에서는 rdi, rsi, rdx에 인자를 넣어주고 함수를 실행했었으나, 32비트 환경에서는 함수 실행 명령 이후 인자를 집어넣어야했다. 1 2 3 4 5 pppr = 0x08048689 pr = 0x0804868b payload = b"A" * 0x48 payload += p32(..
sy46
벌크업 중인 cpp