일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리눅스커널
- 컴퓨터구조
- wargame
- 리눅스 커널
- px4
- css
- pwn.college
- 시스템해킹
- 시스템
- 시그널
- C++
- C언어
- Bandit
- kernel
- 리버싱
- Pwnable.kr
- 시스템프로그래밍
- 리눅스
- pwncollege
- radare2
- Leviathan
- write up
- 시스템 프로그래밍
- 프로그래밍
- 어셈블리어
- 취약점
- 알고리즘
- 드론
- 워게임
- 커널
- Today
- Total
목록전체 글 (179)
Computer Security
inotify 특정 파일/디렉토리에서 발생하는 이벤트를 감시하는 기능 inotify기능을 사용하기 위한 조건 1. inotify object를 하나 생성 해야한다. 2. watch 를 생성한다.(어떤 한 디렉토리를 감시 할 것인지 나타내는 서브객체) inotify int inotify_init (void) int inotify_init1 (int flags) 파라미터 - flags - IN_NON_BLOCK : set non-blocking mode - IN_CLOEXEC : set close-on-exec 반환 값 - 성공 시 inotify 객체 ( file descriptor) - 실패 시 -1 inotify_add_watch 생성해 놓은 inotify 객체 에다가 watch를 추가하기 위한 API ..

목표 file 을 read API 를 통해서 데이터를 읽는데, read 데이터가 없을 경우에, Blocking mode 와 Non-blocking mode가 각각 어떻게 동작하는지와 fcntl API를 이용해서 file의 Blocking mode 와 Non-blocking mode를 변환하는 예제를 작성 해보자. Blocking mode 1. 기본 뼈대를 만들어 준다. 프로세스가 하나 생성되면 기본적으로 3개의 fd 가 열린다. 0번 fd : standard in (STDIN_FILENO) 1번 fd : standard out (STDOUT_FILENO) 2번 fd : standard error (STDERR_FILENO) 2. 이미 열린상태이기에 open API를 호출할 필요는 없고, STDIN fd의..
read API가 호출을 했을때, 읽을 데이터가 없는 경우에 Blocking operation 과 Non-Blocking operation의 차이가 발생한다. Blocking operation 요청한 작업을 마칠 때까지 계속 대기(Blocking)한다. 즉시 return한다. return 값을 받아야 끝난다. Thread 관점 : 요청한 작업을 마칠 때까지 계속 대기하며 return 값을 받을 때까지 한 Thread를 계속 사용/대기 한다. 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 blocking이다. Non-Blocking operation 요청한 작업을 즉시 마칠 수 없다면 즉시 return한다. 즉시 리턴하지 않는다. (일을 못하게 막는..

flock을 이용하여, 여러개의 프로세스를 만드는데 각 프로세스가 동일한 파일을 통해서 동기화를 하는 상황을 만들어보자. 1. 기본 뼈대를 잡아준다. 2. lock의 주체가 되는 열린 파일을 하나 만들어 주자. 3. lock을 잡고 lock을 푸는 코드를 짜준다. (SH 예시) 4. lock을 잡고 푸는 사이에 시간을 기다리는 부분을 getc API를 이용해 작성 해준다. 사용자의 입력을 기다린다. 5. 프로그램을 실행하면서 첫번째 파라미터가 exclusive 면 exclusive lock을 잡고 shared면 shared lock을 잡는 코드를 작성하자. i) argc를 테스트한다. (파라미터를 한개를 받길 원하니 2보다 작으면 에러처리) ii) 첫번째 argv 파라미터가 ex인지 sh인지 테스트해주는..