Securing Keys

[FTZ] Level 3: SUID가 걸린 함수에 인자 전달로 명령 실행 본문

IT/Linux

[FTZ] Level 3: SUID가 걸린 함수에 인자 전달로 명령 실행

GRACE_MJ 2020. 8. 30. 01:06

 

 

 

level3로서 로그인 후 홈 디렉토리를 확인해보니 역시 hint 파일이 존재한다

이를 확인해보니 autodig의 소스코드를 보여주고 있는데

이를 이용하여 level4의 권한을 얻어야한다고 한다

 

추가 힌트를 확인해보니

동시에 여러 명령어를 사용하는데

이때 문자열 형태로 명령어를 전달해야할 듯 하다

 

 

 

 

소스코드를 확인해보니, dig 명령어를 사용하는 프로그램이다

dig 명령어는 리눅스에서 네임서버로부터 정보를 가져오는 명령어로,

DNS 질의응답이 잘 이뤄지는지 확인하는 것이다

 

$	dig @[문자열] version.bind chaos txt

즉 autodig가 실행되면 위와 같은 명령어가 실행된다

[문자열] 서버로 nslookup을 실행하는 것이나 마찬가지인데 뒤에 옵션은 굳이 알아보지 않아도 될 듯 하다

 

 

 

 

 

 

 

 

 

autodig로 된 파일을 찾아보니 역시나 autodig는 level4의 SUID가 걸려있는 실행파일이었다

 

level3로서 읽고 실행할 수 있는 권한이 있으니

이 파일을 실행할 때에 level4의 권한을 빌린 상태일테고,

 

명령어를 실행하는 파일이기 때문에 다중 명령어를 사용할 수 있는 ;&& || 를 사용하면

my-pass 명령어를 같이 쓸 수 있지 않을까 싶다

 

그 중에 나는 ; 이 성공 실패에 관계없이 모두 실행해주는 다중 명령어기에 이를 사용하도록 하겠다

 

 

 

 

 

 

$	dig @8.8.8.8; my-pass; version.bind chaos txt

위와 같은 명령어를 실행하면

dig @8.8.8.8 명령어도 실행하고,

my-pass도 실행하고

그 뒤도 실행하게 될 것이다 (하지만 마지막은 명령어가 아니기에 실패로 뜰 것이다)

 

 

다시 한 번 정리하자면,

autodig 파일을 실행할 때에 "8.8.8.8; my-pass;"를 인자로 넘겨주면 my-pass가 실행될 것이다

이때 공백이 존재하므로 ' ' (작은따옴표)를 이용해주면 될 것 같다

성공적으로 level4의 패스워드를 얻고

아까 예상했던 것과 같이 마지막 명령어는 실행 실패가 뜨는 것을 확인할 수 있다

Comments