본문 바로가기
FTZ

level 3

by 미스터 J 2020. 6. 5.
반응형

이번에도 어김없이 level3 디렉터리에 가서 hint를 확인합니다.

autodig의 소스 랍니다. 그렇다면 autodig라는 파일을 찾아야 겠죠?

find를 이용합니다. 전처럼 유저네임 level4를 이용하여 찾을 수도 있지만 이번에는 다르게 가볼게요.

find / -name autodig 2>/dev/null 을 입력합니다.

이번에도 level4 SetUid가 지정되어 있군요. 단순히 실행하면 버전이 출력됩니다.

그럼 어떻게 해야 될까요??? 우선 코드를 다시 한 번 살펴 볼게요

 

int main(int argc, char **argv)

    argc = argument count, main 함수에 전달 된 인자의 개수

    argv = argument vector, 가변적인 개수의 문자열

입니다. 단순히 실행했을 때 Version 0.9가 출력되는 것을 보면, if( argc ! = 2) 구문이 실행되는 것이죠.

argc 가 인자의 개수이므로, autodig 실행시에 두개의 인자를 붙여주면 된다는 겁니다. 그러면 밑의 코드인 system(cmd); 가 실행된다는 거죠.

 

 

이제 more hints를 봅시다.

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

지금까지 클리셰로 보아 /bin/bash  my-pass를 사용해야한다는 느낌이 오실겁니다.

명령어를 붙여쓰려면 ; (세미콜론)을 사용하시면 됩니다.

/bin/bash;my-pass 란 결과가 나오죠.

./autodig /bin/bash;my-pass 라고 쳐볼까요?

엥? level3의 패스워드가 그대로 나오네요?

./autodig ;/bin/bash;my-pass 는요?

이건 버전이 그대로 출력되는 군요.

; (세미콜론) 다음에 있는 명령어만 실행을 하는 것 같습니다. 이 문제를 해결하기 위해서는 힌트 2번으로 가야합니다.

 

2. 문자열 형태로 명령어를 전달하려면?

결론부터 말하면 답은 ""(큰따옴표)로 묶는 것입니다.

./autodig "/bin/bash;my-pass" 를 입력하면,

"suck my brain" 이라는 암호를 얻을 수 있습니다.

반응형

'FTZ' 카테고리의 다른 글

Level 5  (0) 2020.06.08
level 4  (0) 2020.06.05
level 2  (0) 2020.06.05
Level 1  (0) 2020.06.05
Prologue  (0) 2020.06.04