[toddler's bottle] cmd1 풀이

폭풍저그머성찡 ㅣ 2018. 12. 3. 11:54

#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;

}


처음엔 저기서 설정한 환경변수가 죽을 때 까지 그대론 줄 알았는데

프로그램 실행이 끝나고 나면 원래대로 돌아오는거였다.

즉, 기본실행경로 환경변수를 이상한걸로 조작해놓고 할걸 하라는 뜻이었다.

사실 별로 의미없는 제약이다. 명령어를 칠 때 절대경로로 입력해주면 다 똑같이 실행 가능하다. (예 : /usr/bin/vim)

단, flag, sh, tmp는 실행문장에 삽입이 불가능하다.



처음엔 gid를 가지고 vim을 켜면 그룹 권한으로 실행될 줄 알았는데 안되더라 

그래서 고심하다가 /usr/bin/python을 키고 flag파일을 읽어서 출력하면 된다.

사실 vim으로 하는 방법이 왜 안되는지는 잘 모르겠다. python켜는거랑 같은 방법 아닌감;;




mommy now I get what PATH environment is for :)

'write-up > pwnable.kr' 카테고리의 다른 글

[toddler's bottle] shellshock  (0) 2018.12.03
[toddler's bottle] cmd2  (0) 2018.12.03
[toddler's bottle] input  (0) 2018.11.30
[toddler's bottle] mistake  (0) 2018.11.30
[toddler's bottle] random  (0) 2018.11.30