-
level5war game Write up/ FTZ 2018. 9. 22. 03:20
level5 문제는 시스템 해킹 기법 중 레이스 컨디션이라는 기법을 이용하는 문제입니다.
레이스 컨디션 기법은 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이라고 보시면 되는데
- 레이스 컨디션 공격의 기본 개념
1. 취약 프로그램이 생성하는 임시 파일의 이름을 파악
2. 생성될 임시 파일과 같은 이름의 파일을 생성
3. 이에 대한 symbolic link 를 생성
4. 원본 파일을 지운 채 취약 프로그램이 symbolic link를 건 파일을 생성할 때를 기다림
5. 파일이 생성되었을 때 symbolic link를 이용해 파일 내용을 변경
6. 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행 -> 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 생성함
--> symbolik link란?
절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉토리에 대한 참조를 포함하고 있는 특별한 종류의 파일
-> 대부분의 작업에 투명하게 동작, symbolik link 로 이름이 지정된 파일에 읽고 쓰는 프로그램들은 마치 운영 체제가 직접 대상 파일에 access하는 것처럼 수행, 그러나 symbolik link들을 특별하게 다루어야 하는 프로그램들(ex backup utility)은 이들을 직접 식별하고 조작
이제 문제를 풀어보도록 하죠!
--------------------------------------------------'
-->" 5번 문제는 어떤 프로그램을 실행시키면 해당 프로그램이 /tmp라는 경로에 level5.tmp라는 임시 파일을 생성한다고 한다. 이를 이용해서 level6 권한을 얻어라 " 가 문제인것 같다, 여기서 알 수 있듯이 임시 파일을 이용해서 공략해야 할 것 같다. 그럼 실행 시 생성되는 임시 파일의 값을 내가 원하는 파일로 symbolik link 를 통해 가지고 오면 된다.
먼저 프로그램을 실행시킬 로직을 구현하고, 실행 시 생성되는 파일을 내가 원하는 파일로 옮기기 위해 심볼릭 링크를 걸어줄 로직을 구현해서 함께 실행시켜 주면 된다,..
/tmp라는 경로에 임시 파일이 생기니까 여기서 파일을 넣어 놓고 시작하자.
이 프로그램은 /usr/bin/ 경로에 level5라는 프로그램을 10000번 실행시키는 로직이다.
이 프로그램 같은 경우에는 /tmp 경로에 oh.txt라는 파일을 생성하고 10000번 동안 ln 명령과 -sf 플래그를 이용해서 /tmp/oh.txt 와 /tmp/level5.tmp라는 파일을 readlink호출을 사용하여 내용을 읽어온다,
python을 이용해서 두 프로그램을 실행한다!!!
짜잔!!!!