Level5 문제 풀이
문제 파악
문제 분석
파일 생성, 읽기, 쓰기 등의 과정에서 발생할 수 있는 Race Condition에 대한 이해도를 테스트 하는 문제
/tmp/level5.tmp 파일에 다음 레벨 비밀번호 값이 기록되므로, 해당 파일이 삭제되기 전에 읽어서 화면에 출력하면 된다.
임시파일이 생성되나 즉시 삭제된다.
Race Condition 공격이 가능한 프로그램의 특징
- 임시 파일을 생성하는 프로그램이어야 한다.
- 임시 파일 생성시 파일 권한이 setuid(4755)로 설정되어야 한다.
- 공격자가 경쟁관계를 성립시키기 위해서는 임시파일명을 미리 파악하고 있어야 한다.
- 레이스 컨디션에 대한 패치가 되지 않아야 한다.
해결
1. 쉽게 문제 푸는 방법
level6의 권한으로는 파일을 지울 수 없기 때문에 임시파일이 덮어씌워지고 프로그램이 종료된다.
2. 심볼릭링크를 통해 문제를 푸는 방법
심볼릭링크 파일을 만들게 되면 원본 파일에 내용이 수정되자마자 링크파일 내용도 수정이 되어 원본파일이 삭제되더라도 패스워드를 확인할 수 있게 된다.
3. 이 문제에서 원하는 풀이 방법
Race Condition을 이용해 문제를 풀기 위해서는 2가지 프로그램을 만들어야 합니다.
/usr/bin/level5를 1000번 반복해서 실행시키는 A프로그램과
A프로그램이 실행되는 동안 /tmp/level5.tmp 파일에 심볼릭 링크를 걸어주는 B프로그램.
4. 쓰레드를 이용한 Race Condition 공격 코드
주의할 점은 스레드 이용한 프로그램을 gcc 컴파일 할 때, -pthread 옵션을 반드시 부여해야 한다.
Hand-ray
'Pwnable > Hackerschool FTZ' 카테고리의 다른 글
[FTZ] 07. Level6 - System interrupt (0) | 2018.07.28 |
---|---|
[FTZ] 05. Level4 - xinetd backdoor (0) | 2018.07.25 |
[FTZ] 04. Level3 - system() 취약점 (0) | 2018.07.25 |
[FTZ] 03. Level2 - Editor Shell Command (0) | 2018.07.25 |
[FTZ] 02. Level1 - Backdoor 찾기 (0) | 2018.07.20 |