我正在實現一個使用system()
函數的echo命令。 echo命令的參數來自命令行參數。但是,當使用';'在參數中顯示目錄列表。 我該怎麼做才能避免它?是因爲我的程序中有命令注入嗎?C編程中的指令注入
更新:從評論
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv) {
char cmd[50] = "echo ";
strcat(cmd,argv[1]);
system(cmd);
}
我可以編譯代碼添加代碼,但在執行,如果我給命令行參數爲例如:「./a.out你好; LS'然後目錄列表正在發生。
你有沒有不使用'printf()'而不是'system(「echo」);'? – jonescb 2011-03-18 12:50:16
當我嘗試使用printf時,它也會打印相同的錯誤。目錄列表正在發生。 – Bithin 2011-03-18 12:53:54
你能告訴我們一些代碼,所以我們知道你在說什麼嗎? – Starkey 2011-03-18 12:53:56