profile image

L o a d i n g . . .

hint를 확인한 결과입니다.

 

위 소스코드를 분석하면 다음과 같습니다.

int main(int argc, char **argv){

우선 인자값을 받습니다.

 

strcpy( cmd, "dig @" );
strcat( cmd, argv[1] );
strcat( cmd, " version.bind chaos txt");

cmd = "dig @"+"argv[1](우리가 입력한 값)"+" version.bind chaos txt"

 

system( cmd );

그리고 system()를 통해 cmd의 값을 실행합니다.

소스코드를 통해 "아래의 힌트를 참고해서 autodig에 인자값을 전달해줘야 함"을 짐작할 수 있습니다.

 

그 다음 autodig 파일을 찾기 위해 find 명령어를 사용합니다.

find / -name autodig 2>/dev/null

 

ls -al 명령어를 통해 /bin/autodig에 대해서 level 4의 권한으로 setuid가 걸려있음을 알 수 있습니다.

 

여기까지 종합해보자면, level 4의 권한으로 setuid가 걸린 autodig 파일을 실행하면서 인자값을 전달해줘야 하는데, 이때 인자값으로 bash 명령어와 my-pass 명령어를 전달해주면 level4의 패스워드를 얻을 수 있음을 알 수 있습니다.

 

동시에 여러 명령어를 사용하려면? ; 사용

명령어를 문자열 형태로 전달하려면? " " 사용

/bin/autodig "bash;my-pass"

Level 4의 패스워드는 "suck my brain"

 

 

참고 : seungwon.tistory.com/201

 

문자열 형태로 명령어 전달

(쉘 스크립트 실행  파일) "명령어;추가하려는 명령어"

seungwon.tistory.com

 

'Wargame > Hackerschool FTZ' 카테고리의 다른 글

[FTZ] 해커스쿨 FTZ level 5  (0) 2021.03.23
[FTZ] 해커스쿨 FTZ level 4  (0) 2021.03.23
[FTZ] 해커스쿨 FTZ level 2  (0) 2021.03.23
[FTZ] 해커스쿨 FTZ level 1  (1) 2021.03.23
[FTZ] 해커스쿨 FTZ training 6~10  (0) 2021.03.10
복사했습니다!