Skip to main content

Программирование C

Запуск скриптов с рутовыми правами без доступа к скриптам

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void RemoveSlash(char* source)
{
  char* i = source;
  char* j = source;
  while(*j != 0)
  {
    *i = *j++;
    if(*i != '/')
      i++;
  }
  *i = 0;
}

int main(int argc, char** argv) {
    if (argc <2) {
    printf("Usage: runme scriptname\n");
    exit(-1);
    }
    char myoutput_array[5000];

    strcat(myoutput_array, "bash /opt/scripts/");
    RemoveSlash(argv[1]);
    strcat(myoutput_array, argv[1]);
    strcat(myoutput_array, "\n");
    /printf("%s", myoutput_array);/
    setuid(0);
    system(myoutput_array);
    return 0;
}

gcc -o test test.c
cp test /usr/bin/runme
chmod 4775 /usr/bin/runme