Demon 시즌2/linux kernel exploitation 16

[linux kernel] (8) - Device Driver (디바이스 드라이버)

[linux kernel] (1) - 커널(kernel)이란? 에서 디바이스 드라이버에 대해 간단하게 알아보았었다. 너무 간단하게 알아본 것 같기도 하고... 내용을 더 추가하고 싶은데 이어서 쓰면 글이 너무 길어질 것 같아서 따로 빼서 써보려고 한다.. Device Driver user aplication이 정형화된 인터페이스를 통해 장치에 접근할 수 있도록 해주는 소프트웨어 커널이 컴파일 될 때부터 포함된 디바이스 드라이버/ 별도로 컴파일되어 커널 부팅 후에 로드되는 디바이스 드라이버 모듈의 일종, 디바이스 드라이버를 작성하는 것 = 모듈 프로그래밍, Makefile을 이용해 컴파일함 Character Device device를 파일처럼 접근하여 직접 read/write 수행 ex) keyboard...

[linux kernel] (7) - 2018 QWB ctf : core (ret2usr)

core 문제를 풀어보기로 결심하였다. > 목차 1. 제공된 파일 살펴보기 2. 디버깅 해보기 - Base Address 구하기, 디버깅 3. test expoilt 파일 넣어보기 4. 모듈 분석하기 5. 익스플로잇 준비 5-1. core_read() 함수 실행 테스트 5-2. canary leak 5-3. commit_creds 함수와 prepare_kernel_cred 함수 주소 읽기 5-4. fake trapframe 설정 하기 6. 익스플로잇 제공된 파일 살펴보기 bzImage : 커널이미지 (vmlinux에서 Instruction set을 뽑아냄) core.cpio : 파일시스템 start.sh : qemu를 실행하는 옵션이 작성되어 있는 쉘 스크립트 vmlinux : ELF 타입, 커널 디버깅..