我的程序使用excve运行ls,第二个参数由用户填充:
char * envp[1] = { 0 };
execve(my_command, user_input, envp);
用户是否可以在user_input参数中注入命令,即使它被视为参数?
我试过运行这个但是$(之前解释为:
./my_program.out "$(cat /etc/passwd)"
有没有办法逃脱$
但仍然注入命令?
答案 0 :(得分:0)
除非ls内有漏洞,否则他们无法注入命令。
请参阅http://linux.die.net/man/2/execve
参数向量和环境可以被被调用程序的main函数访问,当它被定义为:
int main(int argc, char *argv[], char *envp[])