[C] Erreur à la compilation
|
02-11-2012, 20h52
(Modification du message : 02-11-2012, 20h53 par welc0me.)
Message : #1
|
|
welc0me
Membre Messages : 40 Sujets : 6 Points: 1 Inscription : Oct 2012 |
[C] Erreur à la compilation
J'essaie de réaliser un chall. Pour cela je dois coder un petit programme, mais j'obtiens des erreurs et des warnings. Comme je suis une nouille, je trouve pas de solution, quelqu'un pourrait-il me mettre sur la voie ?
Code : #include <stdio.h> Bon j'pense quand même avoir compris que c'est une histoire de type, voici l'insulte : Citation :lvl.c: In function ‘main’:
"Tout ce que je sais, c'est que je ne sais rien." Socrate
|
|
02-11-2012, 20h58
Message : #2
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,609 Sujets : 71 Points: 465 Inscription : Jan 2012 |
RE: Erreur à la compilation
Bonjour,
Pour itoa déjà c'est cette syntaxe: http://www.cplusplus.com/reference/clibr...dlib/itoa/, et pour faire disparaître les warnings t'as juste à cast en (char*). Ensuite , wtf ton "./~/binary4" ? C'est soit ~/binary4, soit ./binary4, pas un truc entre les deux :')
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
03-11-2012, 01h41
Message : #3
|
|
welc0me
Membre Messages : 40 Sujets : 6 Points: 1 Inscription : Oct 2012 |
RE: [C] Erreur à la compilation
./~/binary4 erreur d'inattention au temps pour moi x)
La syntaxe de itoa que tu m'as filé est en C++, là c'est du C, donc j'ai finalement juste fait un snprintf() Bon sinon j'ai tout bien regardé, exploré chaque fonction, et j'ai sorti un code qui marche bien. Enfin pas entièrement (ça m'aurais étonné). Soit ce petit programme : Code : #include <stdio.h> avec "binary" un programme set-uid root. Quand je lance le petit programme, rien ne se passe, et quand je remplace "binary" par "test" (qui contient juste un printf("ok") de vérification), ça fonctionne (et "ok" est affiché) Donc execve lance pas binary parce qu'il est set-uid root ?
"Tout ce que je sais, c'est que je ne sais rien." Socrate
|
|
03-11-2012, 02h49
Message : #4
|
|
ark
Psyckomodo! Messages : 1,033 Sujets : 48 Points: 317 Inscription : Sep 2011 |
RE: [C] Erreur à la compilation
Yop, alors, je viens de faire le test, execve() marche nickel chez moi sur un programme avec et sans sticky bit.
Preuve ici: (Le exec fait juste un exec, avec l'env a NULL. le programme sticky lui, ecrit simplement "I have a sticky bit!") Code : Ark|0140 ls -l Je remarque par contre dans ton code que le deuxième paramètre que tu passe a execve() est NULL. Or, il est impossible pour ce deuxième paramètre d’être NULL puisque qu'il représente les arguments passés au programme exécuté. Et, comme on le sait, on a toujours un argument argv[0] egal au nom du programme. C'est peut etre de la que vient ton erreur. |
|
03-11-2012, 09h35
Message : #5
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,609 Sujets : 71 Points: 465 Inscription : Jan 2012 |
RE: [C] Erreur à la compilation
Wait... Par contre je pense qu'on perd le sticky bit si on fait execve... (vu qu'on est dans le contexte du processus courant).
Vaudrait mieux y aller à coup de system() du coup
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
03-11-2012, 14h54
(Modification du message : 03-11-2012, 15h41 par welc0me.)
Message : #6
|
|
welc0me
Membre Messages : 40 Sujets : 6 Points: 1 Inscription : Oct 2012 |
RE: [C] Erreur à la compilation
@Ark: En effet ça marche chez toi... J'ai rectifié l'erreur que tu m'as dit (merci) mais ça fonctionne toujours pas pour moi... Ça doit donc venir d'ailleurs. Merci pour ta réponse
@supersnail: Ah c'est possible, je vais vérifier ça alors Bon bah on perd pas le sticky bit avec un execve... test.c Code : #include <stdio.h> test2.c Code : #include <stdio.h> Code : $ ls -l test test2 Mon problème viendrait de la machine ? Et j'ai essayé avec system() et le programme est lancé. Par contre la fonction n'invoque pas le programme avec le même contexte, et donc je n'ai pas le pid du programme lancé :/ Je pense que je vais m'orienter vers un script bash, ce serait sûrement plus simple.
"Tout ce que je sais, c'est que je ne sais rien." Socrate
|
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)