level5의 ID와 PW는 아래와 같습니다.

 

ID : level5

PW : what is your name?

 

level5의 hint 파일을 읽으면 [그림 1]과 같이 나오게 됩니다.

[그림 1] level5의 hint 파일


/usr/bin/level5 프로그램을 실행시키면 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다고 합니다.

그러면 /usr/bin/level5 프로그램을 실행시켜 임시파일이 생성되는지 확인해보도록 합시다.

[그림 2] 프로그램 실행 후 /tmp 디렉토리


프로그램을 실행시켜도 /tmp 디렉토리에는 level5.tmp라는 이름을 가진 프로그램은 존재하지 않았습니다.

level5라는 프로그램이 실행될 때 임시적으로 level5.tmp 라는 프로그램을 생성했다가 다시 삭제하는 것으로 판단됩니다.

여기서 사용할 기법은 '레이스 컨디션'이라는 해킹 기법을 사용할 것입니다.

먼저 레이스 컨디션에 대해 간단히 알아보겠습니다.


[그림 3]은 일반적인 실행파일의 실행 구조의 예시를 보여줍니다.

[그림 3] 일반적인 파일 입출력 프로그램의 예시


일반적인 파일 입출력 프로그램이 File_Name1.bin과 File_Name2.bin을 읽고 쓰기를 하는 행위를 할 때의 모습입니다.

실행 파일은 두 파일의 이름을 가리켜 읽기/수정 행위를 하게 됩니다. 두 파일에는 실행파일에서 수행하는 행위가 담겨 있을 것입니다.


[그림 4]는 레이스 컨디션 기법으로 파일의 내용을 Hacker's File에 실행 파일에서 일어나는 입력 값을 받아오는 방법입니다.

레이스 컨디션 기법의 순서는 다음과 같습니다.


1. 임시로 생성되는 파일(혹은 사용되는 파일)의 이름과 동일한 심볼릭 링크 파일을 생성합니다.

2. 심볼릭 링크 파일은 해커가 읽고 쓸 파일을 가리키도록 합니다.

3. 실행 파일을 실행합니다.

4. 이제 원래 File_Name1.bin에 입력되어야 할 내용이 Hacker's File에 입력되는 것을 확인할 수 있습니다.


[그림 4] 레이스 컨디션 기법을 이용한 입력 값 탈취


이제 어떤 행위가 일어나는지 알기 위해 레이스 컨디션 기법을 적용시켜봅시다.


[그림 5] 해커의 파일과 심볼릭 링크 파일 생성


cat > /tmp/hackerfile.bin 명령어를 입력하여 입출력에 사용될 파일을 생성합니다.

무슨 행위가 일어날지 모르기 때문에 파일에는 아무런 내용도 입력하지 않도록 합시다.

ln -s /tmp/hackerfile.bin /tmp/level5.tmp 명령어를 입력하여 hackerfile.bin파일을 가리키는 level5.tmp라는 이름의 심볼릭 링크 파일을 생성하도록 합니다.

위의 설명은 [그림 5]와 같은 결과를 볼 수 있게 됩니다.

[그림 5] /usr/bin/level5를 실행한 후의 hackerfile.bin의 변화


/usr/bin/level5를 실행하면 hackerfile.bin에 입출력의 어떤 변화가 있는지 살펴봅시다.

hackerfile.bin에는 next password : what the hell이라고 쓰여 있습니다.

이 실행파일은 임시파일을 생성하여 그 파일에 다음 레벨에 대한 비밀번호를 입력하는 것 같습니다.

'WARGAMES > FTZ' 카테고리의 다른 글

level09_FTZ  (0) 2016.07.21
level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15
level01_FTZ  (0) 2015.11.15

+ Recent posts