본문 바로가기

Pwnable/Hackerschool FTZ

[FTZ] 06. Level5 - Race condition


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