У меня есть следующий простой код c
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
setenv(key, value, 1);
return 0;
}
И если выполнить его, как показано ниже,
./a.out TEST $(rm /)
Он просто удалит корень (допустим, что двоичный файл c имеет привилегиюСделай так).Теперь я могу предотвратить это, добавив qoutes ('') к аргументу, как показано ниже
./a.out TEST '$(rm /)'
Я пытаюсь смоделировать то же самое внутри кода C (как показано ниже), но это не помогает, Любая идея / помощь подостижения этого?
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
char key[2048] = {0};
char value[2048] = {0};
snprintf(key, 2048, "'%s'", argv[1]);
snprintf(value, 2048, "'%s'", argv[2]);
setenv(key, value, 1);
return 0;
}