Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 22nd, 2012  |  syntax: None  |  size: 0.94 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdlib.h>
  2. #include <unistd.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6. void print(unsigned char *buf, int len)
  7. {
  8.         int i;
  9.  
  10.         printf("[ ");
  11.         for(i=0; i < len; i++) printf("%x ", buf[i]);
  12.         printf(" ]\n");
  13. }
  14.  
  15. int main()
  16. {
  17.         unsigned char buf[512];
  18.         unsigned char *ptr = buf + (sizeof(buf)/2);
  19.         unsigned int x;
  20.  
  21.         while((x = getchar()) != EOF) {
  22.                 switch(x) {
  23.                         case '\n': print(buf, sizeof(buf)); continue; break;
  24.                         case '\\': ptr--; break;
  25.                         default:
  26.                                                         if(((unsigned int)ptr & 0xff000000)==0xca000000) {
  27.                                                                 setresuid(geteuid(), geteuid(), geteuid());
  28.                                                                 execlp("/bin/sh", "sh", "-i", NULL);
  29.                                                         }
  30.                                                        
  31.                                                         if(ptr > buf + sizeof(buf))
  32.                                                                 continue;
  33.                                                        
  34.                                                         ptr++[0] = x;
  35.                                                         break;
  36.                 }
  37.         }
  38.         printf("All done\n");
  39. }