일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pwncollege
- 시스템 프로그래밍
- 리눅스
- 컴퓨터구조
- 리버싱
- pwn.college
- 시스템프로그래밍
- 시스템
- C언어
- 어셈블리어
- css
- 커널
- kernel
- wargame
- 취약점
- 시그널
- px4
- 시스템해킹
- Bandit
- write up
- Leviathan
- 프로그래밍
- 리눅스커널
- Pwnable.kr
- 드론
- 알고리즘
- radare2
- 리눅스 커널
- 워게임
- C++
- Today
- Total
목록정보보안 (179)
Computer Security
파일 열기 FILE *fopen(const char *pathname, const char *mode); 파라미터 - pathname : 파일 경로 - mode : 파일 열기 모드(파일을 어떤 방식으로 열건지) 반환 값 - 성공 시 :열린 파일 포인터(stream) - 실패 시 :NULL 포인터 반환 파일 열기 모드 모드 별로 읽기 권한과 쓰기 권한을 따로 허용을 요청하게 되어있다. 읽기나 쓰기만 필요한 경우도 있고 읽기와 쓰기 모두 필요한 경우도 있기에 자신이 필요한 모드를 결정할 수 있다. 파일 포지션은 파일을 열 때, 파일 포인터의 위치를 어느 위치에 놓을 것인지를 결정하는 것이다. 파일의 시작에 놓을 수도 있고 끝에 놓을 수도 있다. 또, 파일의 존재 여부에 따라 r 모드의 경우에는 존재된 파일이..
시스템 해킹을 공부하면서 익스플로잇에대해 내가 직접 짜고 자유롭게 하기 위해선 리눅스 커널 쪽 지식이 매우 매우 중요하다는 사실을 깨닫고, 초심으로 돌아가 리눅스 커널에 대해서 깊이있게 공부할 예정이다. 리눅스 커널이란? 오픈 소스 모놀리딕 유닉스 계열 컴퓨터 운영 체제 커널이다. 리눅스 계열의 운영 체제는 이 커널에 기반을 두며 개인용 컴퓨터와 서버와 같은 전통적인 컴퓨터 시스템들과 라우터, 무선 액세스 포인트, PBX, 셋톱 박스, FTA 리시버, 스마트 TV, PVR, NAS 어플라이언스 등의 다양한 임베디드 장치에 보통 리눅스 배포판의 형태로 배치된다. 태블릿 컴퓨터, 스마트폰, 스마트워치를 위한 안드로이드 운영 체제는 기능 구현을 위해 리눅스 커널이 제공하는 서비스들을 사용한다. 데스크톱 컴퓨터..
Exploit 순서 memory leak --> kernel gadget offset 계산 --> fake stack & ROP 작성 --> UAF bug & kmalloc()logic bug 1.Memory leak 1. ioctl()을 호출해 fp_struct 할당한다. 2. close()를 호출해 fp_struct할당을 해제한다. 3. write()로 fp_struct가 사용하던 슬랩 객체를 할당받은 뒤, 슬랩 페이지에 남아 있는 printk() 주소 직전까지 더미 값(0x0707..)으로 덮는다. 4. ioctl()을 호출해 _fp -> fp_report_ps()를 호출하면 strlen()에 의해 더미 값 뿐만 아니라 printk()주소 까지 evdev에 보고된다. 5. 유저 공간에서 evdev를..
문제 분석 1. cat start.sh 를 이용해 적용된 보호기법을 살펴보자. KASLR, SMEP 보호기법이 걸려있다는 것을 알 수 있다. kernel memory address leak, ROP가 필요하다. 2. input_test_driver_init() 을 살펴보자. static int input_test_driver_init(void){ int result; int err; result = misc_register(&input_test_driver_driver); if(result){ printk("misc_resgister(): Misc device register failed\n"); return result; } if(!request_irq(TEST_IRQ, test_interrupt, 0..