Outils d'utilisateurs

Outils du Site


hackingweek_2014:exploit:exploit5

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

hackingweek_2014:exploit:exploit5 [2014/03/03 01:57]
ganapati créée
hackingweek_2014:exploit:exploit5 [2017/04/09 15:33] (Version actuelle)
Ligne 1: Ligne 1:
 Source : Source :
- +<code C> 
- #include <stdio.h> +#include <stdio.h> 
- #include <stdlib.h> +#include <stdlib.h> 
- #include <string.h> +#include <string.h> 
- #include <unistd.h> +#include <unistd.h> 
- #include <libgen.h> +#include <libgen.h> 
- #include <sys/types.h> +#include <sys/types.h> 
- char *program; +char *program; 
- struct task { +struct task { 
- int priority; + int priority; 
- char *name; + char *name; 
- }; +}; 
- void foo() { +void foo() { 
- system("/bin/sh"); + system("/bin/sh"); 
- exit(EXIT_SUCCESS);+ exit(EXIT_SUCCESS); 
 +
 +struct task *task_alloc() { 
 + struct task *task = malloc(sizeof(struct task)); 
 + if (!task) { 
 + fprintf(stderr, "%s: error: out of memory\n", program); 
 + exit(EXIT_FAILURE);      
  }  }
- struct task *task_alloc() { + task->name = malloc(8 * sizeof(char)); 
- struct task *task = malloc(sizeof(struct task)); + if (!task->name) { 
- if (!task) { + fprintf(stderr, "%s: error: out of memory\n", program); 
- fprintf(stderr, "%s: error: out of memory\n", program); + exit(EXIT_FAILURE);      
- exit(EXIT_FAILURE);       +
-+
- task->name = malloc(8 * sizeof(char)); +
- if (!task->name) { +
- fprintf(stderr, "%s: error: out of memory\n", program); +
- exit(EXIT_FAILURE);       +
-+
- return task;+
  }  }
- void task_free(struct task *task) { + return task; 
- free(task->name); +
- free(task);+void task_free(struct task *task) { 
 + free(task->name); 
 + free(task); 
 +
 +void task_write(struct task *task, int priority, char* name) {  
 + task->priority = priority; 
 + strcpy(task->name, name); 
 +
 +int main(int argc, char **argv) {  
 + struct task* t[2]; 
 + program = basename(argv[0]); 
 + if (argc < 3) { 
 + fprintf(stderr, "%s: error: missing argument(s)\n", program); 
 + exit(EXIT_FAILURE);
  }  }
- void task_write(struct task *task, int priority, char* name) {  + t[0] = task_alloc(); 
- task->priority = priority; + t[1] = task_alloc(); 
- strcpy(task->name, name); + task_write(t[0], 1, argv[1]); 
-+ task_write(t[1], 2, argv[2]); 
- int main(int argc, char **argv) {  + fprintf(stdout, "Tasks\n=====\n"); 
- struct task* t[2]; + for (int i=0; i<2; i++) { 
- program = basename(argv[0]); + fprintf(stdout, "Task(%d)\n", i); 
- if (argc < 3) { + fprintf(stdout, "priority: %d\n", t[i]->priority); 
- fprintf(stderr, "%s: error: missing argument(s)\n", program); + fprintf(stdout, "name: %s\n\n", t[i]->name);
- exit(EXIT_FAILURE); +
-+
- t[0] = task_alloc(); +
- t[1] = task_alloc(); +
- task_write(t[0], 1, argv[1]); +
- task_write(t[1], 2, argv[2]); +
- fprintf(stdout, "Tasks\n=====\n"); +
- for (int i=0; i<2; i++) { +
- fprintf(stdout, "Task(%d)\n", i); +
- fprintf(stdout, "priority: %d\n", t[i]->priority); +
- fprintf(stdout, "name: %s\n\n", t[i]->name)+
-+
- task_free(t[0]); +
- task_free(t[1]); +
- return EXIT_SUCCESS;+
  }  }
 + task_free(t[0]);
 + task_free(t[1]);
 + return EXIT_SUCCESS;
 +}
 +</code>
hackingweek_2014/exploit/exploit5.1393808232.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)