분류 전체보기 309

[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 타입, 커널 디버깅..

Use-After-Free (UAF)

예전에 봤는데.. 까먹은 것 같아서 정리해보려고 한다. 참고 : dreamhack.io 환경 : ubuntu 16.04.7 동적 메모리 관리에서 가장 자주 발생하는 문제는 해제된 메모리를 정확히 관리하지 않아 발생하는 문제이다. Use-After-Free (UAF) 해제된 메모리에 접근해서 값을 쓸 수 있는 취약점이다. // uaf1.c #include #include #include int main(void) { char *a = (char *)malloc(100); memset(a, 0, 100); strcpy(a, "Hello World!"); printf("%s\n", a); free(a); char *b = (char *)malloc(100); strcpy(b, "Hello Pwnable!");..

System Hacking 2021.01.06

스터디 목차

linux kernel exploitation * [linux kernel] (9), (10) 은 인프런 강의인 리눅스 커널 해킹. A부터 Z까지 를 수강한 후, 강의 내용을 정리하고 제가 더 살을 덧붙인 글입니다. 1주차 12월 둘째주 스터디 날짜 : 12/11(금) 21:00 (1) - 커널(kernel)이란? (2) - kernel land의 메모리 보호기법 (3) - task 2주차 12월 넷째주 스터디 날짜 : 12/27(일) 21:00 (4) - Slab Allocator(슬랩 할당자) 3주차 1월 첫째주 스터디 날짜 : 1/3(일) 21:00 (4) - Slab Allocator(슬랩 할당자) - 슬랩 캐시에 대한 내용 추가 (5) - 환경 세팅 (6) - CSAW 2010 Kernel Ex..

Demon 시즌2 2021.01.02

[linux kernel] (6) - CSAW 2010 Kernel Exploit

드림핵 강의를 보다가 막혀서 팀원분들이 공부하는 것처럼 CTF write up을 보면서 공부하기로 했다. blackperl security 블로그의 CSAW 2010 KERNEL EXPLOIT 를 보고 공부해보았다. 직접 실행하면서 문제를 풀어보고 싶었는데 문제 파일을 구하기도 힘들었고 일단은 write up을 보면서 이론으로 공부해보는 것도 나쁘지 않을 것 같아서 그냥 문서를 읽어보면서 공부를 진행하였다. 1. 문제 소스 (csaw.c) 실제 대회 당시에도 문제 소스가 제공되었다고 한다. /* * csaw.c * CSAW CTF Challenge Kernel Module * Jon Oberheide * * This module implements the /proc/csaw interface which ..

[linux kernel] (5) - 환경 세팅

본격적인 리눅스 커널 분석과 CTF 문제 풀이를 위해 환경 구성을 해보았다. 우분투 버전 : ubuntu 18.04 qemu 세팅 우분투 18.04의 경우 기본적으로 qemu가 설치되어 있으며, 추가적으로 qemu-kvm만 설치해주면 된다. sudo apt-get install qemu-kvm CTF에서 주로 제공되는 파일 CTF 문제에서는 커널 이미지(bzImage)와 파일시스템(rootfs.cpio)를 제공해 준다. 디버깅에 유용한 vmlinux는 제공해주기도 하고 제공해주지 않는 경우도 있는데, 이는 extract-vmlinux 스크립트를 이용해 bzImage에서 추출할 수 있다고 한다. /usr/src/linux-headers-$(uname -r)/scripts/extract-vmlinux bzI..