SMALL
level 5 // what is your name? (Race Condition)
Race Condition
- 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상
Race Condition의 공격의 기본
- 취약 프로그램이 생성하는 임시 파일의 이름을 파악
- 생성될 임시 파일과 같은 이름의 파일을 생성
- 이에 대한 심볼릭 링크를 생성
- 원본 파일을 지운 채 위약 프로그램이 심볼릭 링크를 건 파일과 같은 파일을 생성할 때를 기다린다.
- 생성되었을 때, 심볼릭 링크를 이용해 파일 내용을 변경
- 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생성하고 프로세스를 진행시킬 것이고, 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다.
심볼릭 링크
/usr -> tmp 있음
이건 심볼릭 링크 파일 속성이라고 함. lrwxrwxrwx으로 더미값을 의미, 실제 파일의 속성은 심볼릭 링크가 가리키는 파일의 속성값을 따름
뭐 이런게 있는데 중요한게 아니였다 /tmp 디렉토리에 있었음..
무튼 심볼릭 링크는 바로가기 라고 한다.
첨에 저 프로그램을 실행시키면 뭐가 될줄 알았는데 임시파일도 안나오고 그러길래 뭐지 하다가 알게된 사실
이 파일의 흐름은 다음과 같았다.
- /usr/bin/level5 프로그램 시작
- /tmp/level5.tmp 임시파일 생성
- 임시파일에 내용쓴 후 처리/사용
- 파일 삭제
- 종료
그래서 프로그램 시작할때 /tmp/level5.tmp 를 만들기 전에 링크파일을 먼저 만들고 링크를 걸 수 있어야 한다.
우선 임시파일에 내용을 쓴 것을 받아 줄 수 있는 key라는 링크파일을 만들어 주었고 명령어를 통해 링크를 걸어 주었다 ><
잘 들어가 있군! 그렇다면 이제 파일을 실행시키고 난 뒤 링크파일을 열어보자
잘 쓰여져서 정답을 추출해 내었다.