Cha4SEr Security Study

[FTZ-Level3] 풀이 본문

System/FTZ

[FTZ-Level3] 풀이

Cha4SEr 2019. 12. 23. 00:29

ID : level3

PW : can you fly?

 

힌트 파일을 보는 방법은 1,2번 문제와 동일하기 때문에 생략하고 바로 힌트파일을 보겠따.

 

[그림 1]

C언어로 짜여진 프로그램 코드를 보여준다. 이를 해석해보면

- 인자가 2개가 아니면 if문이 실행되면서 "Auto Digger ~~~" 라는 문자열을 출력한 후 종료한다.

- 인자가 2개면 "dig @ " + 입력한 인자 + " version ~~"가 출력된다.

 

이를 이용하여 level4의 권한을 얻어야 하고 추가적으로

- 동시에 여러 명령어를 사용

- 문자열 형태로 명령어를 전달 

이라는 힌트가 있다. 일단은 이정도로만 파악하고 1,2번 처럼 level4의 SetUID가 걸린 파일을 찾아보자.

 

[그림 2]

힌트에 주어진 것과 같이 /bin 디렉토리에 autodig라는 파일이 있다. 이제 이 파일을 실행시켜 보쟝

 

[그림 3]

인자를 주었을 때와 안주었을 때의 출력이 다른 것을 확인할 수 있다.

이쯤에서 힌트를 다시 보자

 

- 동시에 여러 명령어를 사용

- 문자열 형태로 명령어를 전달 

 

autidig 파일은 level4의 SetUID가 걸려있기 때문에 해당 파일을 실행하는 동안은 level4의 권한을

얻은 상태이다. 따라서 autodig를 실행하는 명령어와 my-pass 명령어를 동시에 실행시키면 되지않을까?

 

명령어를 동시에 하는 방법은 명령어 뒤에 ";"를 붙이는 것이다.

예를들어 "ls;ls" 라고 하면 ls 명령이 동시에 두번이 실행된다.

 

 

[그림 4]

자 그럼 이것을 문제에 적용시켜 보자

 

autodig 파일을 실행시키는 명령어와 비밀번호를 출력하는 명령어를 동시에 실행시키면 된다.

 

즉, autodig의 SetUID 덕분에 일시적으로 level4의 권한을 가졌을 이때,

my-pass 명령어로 level4의 비밀번호를 획득하는 것이다. 한번 해보쟝

 

당당하게 ./autodig aaa;my-pass 를 입력해보자!

 

[그림 5]

잉.. 생각과는 다르게 level3의 비밀번호가 나왔따.. 

 

추측해보면 위의 방식대로 입력한 경우 ./autodig aa를 한 후 level4의 권한을 가진 상태로

my-pass가 실행되는 것이 아닌, 명령을 끝내고 다시 level3로 돌아온 후에 my-pass가 실행되는것 같다.

 

여기서 놓치고간 남은 힌트 하나를 보자 

 

- 문자열 형태로 명령어를 전달 

 

그럼 위의 인자와 명령어를 문자열 형태로 전달하면 되겠따!

바로 실행해보도록 하자

 

문자열 형태로 명령어를 전달하려면 양쪽끝에 큰 따옴표 "를 붙여주면 된다.

 

-> ./autodig "aaa;my-pass"

 

[그림 6]

 

성공했다! 

 

위와 같은 방식으로 입력을 하게되면 autodig 파일 실행 시

dig @ aaa;my-pass version.~~~ 와 같이 실행이 되며 세미콜론을 기준으로 뒤의 my-pass가 실행되면서

뒤에 version~~는 무시되고 my-pass만 실행된다.

 

 

 

 

★ 요약 

 

-  동시에 여러 명령어 사용

    ->  세미콜론 사용 (Ex. ls;ls)

-  문자열 형태로 명령어 전달

    ->  큰 따옴표 사용 (Ex. "./autodig; my-pass")

 

 

이로써 FTZ Level3를 다 풀었따!

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

[FTZ-Level6] 풀이  (0) 2019.12.28
[FTZ-Level5] 풀이  (1) 2019.12.26
[FTZ-Level4] 풀이  (0) 2019.12.23
[FTZ-Level2] 풀이  (1) 2019.12.22
[FTZ-Level1] 풀이  (0) 2019.12.22
Comments