FTZ level3 write up

포너블 2020. 2. 25. 23:07

level3에 접속한다

접속후 cat 명령어를 사용하여 hint를 확인한다.

main(int argc, char **argv)
라고 되어 있다
argc와 argv?
argc는 main 함수에 전달된 인자의 개수를 의미한다, 운영체제가 이 프로그램을 실행했을 때 전달되는 인수의 갯수
argv는 가변적인 개수의 문자열이다, 프로그램으로 전달된 실제 인수의 값 [데이터가 모두 문자열로 전해진다]

strcpy : 문자열을 복사하는 함수
ex)
char* strcpy(char* dest, const char* origin);
:orgin에 있는 문자열을 dest로 복사한다

char origin[] = "BlockDMask";
char dest[100];
strcpy(dest, origin);

strncpy?
char* strncpy(char* dest, const char* origin, size_t n);
:origin에 있는 문자열을 dest로 복사하는데 n만큼만 복사해라

char origin[] = "BlockDMask";
char dest[100];
strncpy(dest, origin, sizeof(origin));

strcat?
문자열을 strcat함수를 사용해서 서로 붙일 수 있다.
strcat(최종 문자열, 붙일 문자열);

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

; - 앞의 명령어가 실패해도 다음 명령어가 실행&& - 앞의 명령어가 성공했을 때 다음 명령어가 실행& - 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행


문자열 형태로 명령어를 전달하려면?
리눅스에서는 ;(세미콜론)을 사용해서 여러 개의 명령어를 ;로 구분하여 여러 개 실행시킬 수 있다.
: script 인자2 명령어
2개를 따옴표로 묶어버려 1개로 인식하게끔 한다


똑같이 find명령어를 사용해서 /bin/autodig 파일을 찾는다

그후 실행시키면 실행은 되는 것을 확인할 수 있다.

이 소스코드를 보면 알 수 있는게

autodig가 인자 2개일 경우에 dig@뒤에 argv[1]을 붙혀준다. 그 다음에는 version.bind chaos txt라는 문자열을 cmd 뒤에 추가해주게된다.

이 명령어는 bind버전을 알아보는 명령어다.

level4의 권한을 얻으려면 level2에서 얻었던 것 처럼 my-pass 명령어를 통해 패스워드를 알아야한다

동시에 여러 명령어를 사용하려면 ';' 이 문자를 같이 사용하면 된다.

여튼 /bin/autodig wp0l; my-pass를 치게 되면

level3 의 패스워드 값을 알 수 있다.

이를 통해 autodig가 모두 수행하고 프로그램이 종료한 뒤에 my-pass가 실행되는 것을 알 수 있다.

그러므로 " "을 사용하여 2개의 인자를 하나로 묶어준다

그러면 level4의 패스워드 값을 알 수 있다.

'포너블' 카테고리의 다른 글

FTZ level5 write up  (0) 2020.02.26
FTZ level4 write up  (0) 2020.02.26
FTZ level2 write up  (0) 2020.02.25
FTZ level1 write up  (0) 2020.02.25
FTZ training 01~10  (0) 2020.02.25

설정

트랙백

댓글