Send a link

ANSI C

Table of contents


How to cheat suid()

cheat-suid.c
vi cheat.c
main(){setuid(0);seteuid(0);setgid(0);setegid(0);system("id");}
gcc -o cheat cheat.c
./cheat
uid=0(root) gid=0(wheel) groups=0(wheel)

Cheating suid() in a more elaborate way

cheat-suid-plus.c
int main(int argc, char* argv[]) {
  char args[300];
  char final[300];
  int i;
  args[0]='\0';
  for (i=1;i < argc;i++) {
    sprintf(args,"%s %s",args,argv[i]);
  }
  sprintf(final,"%s",args);
  printf("Running ->%s\n",final);

  setuid(0);seteuid(0);setgid(0);setegid(0);
  system(final);
}


  • + : A leading plus sign indicates that this word must be present in every object returned.
  • - : A leading minus sign indicates that this word must not be present in any row returned.
  • By default (when neither plus nor minus is specified) the word is optional, but the object that contain it will be rated higher.
  • < > : These two operators are used to change a word's contribution to the relevance value that is assigned to a row.
  • ( ) : Parentheses are used to group words into subexpressions.
  • ~ : A leading tilde acts as a negation operator, causing the word's contribution to the object relevance to be negative. It's useful for marking noise words. An object that contains such a word will be rated lower than others, but will not be excluded altogether, as it would be with the - operator.
  • * : An asterisk is the truncation operator. Unlike the other operators, it should be appended to the word, not prepended.
  • " : The phrase, that is enclosed in double quotes ", matches only objects that contain this phrase literally, as it was typed.

Menu