일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DP
- Frequency Response
- information hiding
- 메카님
- convolution
- 게임 개발
- 게임개발
- 유니티
- MLFQ
- 운영체제
- Security
- dirty cow
- polymorphism
- ret2libc
- Race condition
- linear difference equation
- sampling theory
- dtft
- Unity #Indie Game
- link layer
- frequency-domain spectrum analysis
- 배경 그림
- SNR
- 유스케이스
- MAC
- DSP
- STCF
- AINCAA
- stride
- pdlc
- Today
- Total
목록Race condition (3)
다양한 기록
ToCTToU (Time of Check-to-Time of Use) Vulnerability- 액세스 체크와 오픈 사이에 바꿔치기를 함 루트 소유 setuid 프로그램* 이거 아니면 애초에 /etc/passwd 못열음if( !access("/tmp/X", W_OK) ){ f = open("/tmp/X", O_WRITE); write_to_file(f);}access는 특이한 시스템 콜.. ruid 기반으로 권한 체크함open은 euid 기반으로 체크함열고 싶은 파일은 /etc/passwd .. 열어서 루트 계정을 추가하고자 함 (uid, 즉 세번째 필드가 0) 목표: /etc/passwd같이 보호되는 파일에 쓰기- 심볼릭 링크가 도움이 됨 Sticky Directory- 누구나 파일을 만들 ..
여러 스레드, 프로세스가 공유자원을 업데이트할 때 문제가 발생 (읽기만 하면 그럴 일 없음)프로세스나 스레드의 실행 순서에 의존적인 결과ex. 데이터베이스해결하기 위해 mutex 락, 언락이런 부분이 어떻게 공격으로 연결되는가 .. #include #include void main(void){ int pid; printf("PID = %d, in BEGIN printf\n", getpid()); pid = fork(); if( pid == 0 ) { for( int k = 0; k 0 ) { for( int n = 0; n 예시 코드슬립 시 자동 문맥 교환 (usleep이니 마이크로 단위)아무튼 출력 결과가 다르게 나옴(순서)여기서 공유 ..
스레드: 제어의 흐름 프로세스: 제어의 흐름 + 수행을 하기 위한 자원 멀티 스레드 프로세스: 제어의 흐름들 + 수행을 하기 위한 자원 -> 자원의 공유가 발생, 경쟁. 컨커런시 제어 필요 컴퓨터 자원 - CPU(레지스터) - 어드레스 스페이스 (코드 데이터 스탭 힙) - 파일 어떻게 이런 자원을 관리하느냐 프로세스 모델 - 배타적으로 자원을 사용 - fork는 모든 자원을 다 새로 만듦 스레드 모델 - 필요한 자원들 중 몇몇만 공유, CPU나 스택은 따로 가짐 - 공유: 코드, 데이터, 힙, 파일 당연히 스레드가 더 빠르고, 공유하는 측면에서도 스레드가 좋음 -> 속도가 유리 프로세스는 한 프로세스가 죽어도 다른 프로세스에 영향을 안끼치지만, 스레드는 같은 프로세스 내 한 스레드가 죽으면 다 죽음 ->..