보안 공부하는 꼬깔이

FTZ level3 풀이







level3의 홈디렉토리 내용을 확인했다. 역시나 hint와 폴더 2개가 존재


hint 파일을 cat으로 확인해보자.





hint 파일을 cat으로 열어보니 c언어로 이루어진 소스코드가 출력되었다.


그리고 동시에 여러 명령어를 사용하려면? 이라는 문구와 문자열 형태로 명령어를 전달하려면? 이라는 문구도 힌트로 주어졌다.


우선 c언어 소스코드를 해석해보자.




힌트의 소스코드는 이정도의 내용을 나타낸다.


우선 힌트의 소스코드로 컴파일된 문제 파일을 찾기위해 find 명령어를 수행시켜보자.




/bin/autodig 라는 파일을 찾아냈다.





autodig 파일은 setuid가 걸려있고 level4의 소유주로 되어있다.

 

autodig 파일을 실행시켜보자




소스코드 해석을 참조해보면 우리가 autodig를 실행할때 인자값을 전달하지 않았기 떄문에 몇가지 출력문이 출력되고 코드가 종료된다.

그러면 어떤 인자값을 넣어 autodig를 실행시켜야 할지 생각해보자.


우리는 hint 파일에 소스코드 이외에 힌트 2가지를 받았다. 이 힌트를 해석해보자.


- 동시에 여러 명령어를 사용하려면?     리눅스에서는 ;(세미콜론) 을 사용하면 명령어를 동시에 사용할 수 있다.

- 문자열 형태로 명령어를 전달하려면?  문자열 형태로 전달하려는 값을 " " (큰따옴표) 로 묶으면 문자열 형태로 전달이 가능하다.



그렇다면 level4의 권한으로 setuid걸려있는 autodig 파일을 실행하면서 bash 쉘과 my-pass 명령어를 ;(세미콜론) 으로 연결해 동시에 

실행시켜주면서 "bash;my-pass" 이런식으로 문자열 형태로 전달하면 어떻게 될까?




bash 쉘이 level4의 권한으로 실행됨과 동시에 my-pass 명령어가 수행되어 level4의 password가 나왔다.


level3 clear ~








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

FTZ level6 풀이  (0) 2017.06.30
FTZ level5 풀이  (1) 2017.06.30
FTZ level4 풀이  (0) 2017.06.30
FTZ level2 풀이  (0) 2017.06.30
FTZ level1 풀이  (0) 2017.06.30