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