Forum Linux.débutant questions sur differentes commandes

Posté par  . Licence CC By‑SA.
Étiquettes :
0
28
oct.
2014

Bonjour à tous

je me presente tomski, newbie linuxien qui utilise ubuntu depuis plus de 5 ans et qui en découvre chaque jour. Je connais des commandes linux basiques (cd, cp, mkdir, rm….).

Je souhaiterais savoir ce que font les commandes suivantes:

rm –rf ./ls 
echo « cat /challenge/binary/binary1/.passwd » > ./ls
chmod+x ./ls
cd ~
pwd
./binary1

Je sais que rm -rf ca supprime récursivement des fichiers, mais ce que je ne comprends pas cest pourquoi on doit le faire dans un nouveau repertoire cree? En fait jessaye de comprendre pourquoi la personne a fait ca (soluce d'un challenge root-me).

Echo « cat /challenge/binary/binary1/.passwd » > ./ls ca balance le contenu de .passwd dans une nouvelle variable ./ls ?

Je comprends que cd ~ cest un peu comme cd .. sous ubuntu (ca sort du repertoire courant et remonte d'un cran dans l'arbre des fichiers.

pourquoi il atteint le password en faisant ./binary1 et pas en faisant ./passwd ?

Merci en tous cas pour ceux qui me repondront!

ca maiderait a comprendre et ainsi pouvoir refaire par moi meme le challenge et pouvoir avancer.

  • # ok

    Posté par  . Évalué à 2.

    rm -rf ./ls

    efface le répertoire ou le fichier nommé ls

    cd ~

    te remet dans ton home directory, le répertoire défini lors de la création du compte (en général /home/toto pour l'utilisateur toto, /root pour root)

    la commande echo xxxx crée un fichier texte nommé ls avec pour contenu "cat yyy"

    pwd

    affiche l'emplacement où tu te trouves dans l'arborescence du système de fichier

    • [^] # Re: ok

      Posté par  . Évalué à 2. Dernière modification le 28 octobre 2014 à 21:21.

      la commande echo xxxx crée un fichier texte nommé ls avec pour contenu "cat yyy"

      C'te flemme du copier/coller :) Ça ne participe pas à la clarté de ton propos…

  • # piste

    Posté par  . Évalué à 2.

    rm –rf ./ls
    echo "cat /challenge/binary/binary1/.passwd" > ./ls
    chmod+x ./ls
    cd ~
    pwd
    ./binary1

    en decomposant ce code on obtient :

    rm -rf ./ls

    ca efface le fichier (ou le dossier si c'est un dossier) ls qui se trouve dans le dossier courant ./

    echo "cat /challenge/binary/binary1/.passwd" > ./ls

    pour moi cela mais la ligne cat /challenge/binary/binary1/.passwd dans le fichier ls qui se trouve dans le dossier courant ./

    chmod +x ./ls

    cela rend le fichier executable

    cd ~

    ca remonte au dossier /home/user de l'utilisateur actuellement connecté ~ est un raccourci pour le dossier /home de l'utilisateur en cours

    pwd

    affiche le chemin ou nous sommes actuellement, et donc probablement /home/user ou /root suivant l'utilisateur qui lance ce script

    ./binary1

    ca execute le script/programme binary1 qui se trouve dans le dossier courant ./
    donc soit /home/user/binary1, soit /root/binary1 suivant l'utilisateur en cours.

    • [^] # Re: piste

      Posté par  (site web personnel) . Évalué à 5.

      ~ est un raccourci pour le dossier /home de l'utilisateur en cours

      C'est un raccourci général vers les /home, pas seulement de l'utilisateur. Dans ce cas cd ~ ne fait rien de plus que cd seul. Et pour voir son aspect général : cd ~toto amènes dans le /home/toto même si on est pas toto.

  • # Merci

    Posté par  . Évalué à 1.

    Merci pour vos reponses :-)

    juste du coup une toute derniere question qui reste ouverte: pourquoi a la fin il tape ./binary1 et non ./passwd?
    C'est pourtant bien ./passwd qui contient le password. Ou bien ai je raté un truc?

    • [^] # N'exécute pas ces commandes

      Posté par  . Évalué à 5.

      Je vais faire court : n'exécute pas ces commandes, ça pue le soft malveillant.

      rm –rf ./ls

      Ça supprime le fichier ls dans le répertoire courant. Si tu te trouves dans /bin, ls est un binaire essentiel, que tu appelles dans tous les cas où tu veux lister les fichiers d'un répertoire (y compris dans un paquet de scripts shell que tu n'as pas écrits toi-même). Si tu n'es pas dans /bin, ça ne trouvera pas le fichier et ça te retournera une erreur.

      echo « cat /challenge/binary/binary1/.passwd » > ./ls

      On lit le fichier /challenge/binary/binary1/.passwd et on colle son contenu dans un nouveau fichier appelé ls, qui se situe précisément à l'endroit où a été supprimé le fichier ls précédent. Pourquoi on fait ça ? En effet, on pourrait tout à fait, en théorie, modifier le fichier sans le supprimer avant. Sauf que c'est une modification du fichier et qu'on n'a pas les droits pour ce faire sans être root. Alors que si on supprime un fichier appartenant à root, rm affichera simplement une demande de confirmation, qu'on force via l'utilisation de -f à la ligne précédente. Ainsi, on a remplacé un binaire très fréquemment utilisé, protégé par le système de droits, par notre binaire à nous, en contournant le système de droits.

      chmod+x ./ls

      On a notre binaire, mais il n'est pas exécutable. Qu'à celà ne tienne ! On le rend exécutable. Comme on a créé le binaire nous-même, on en est propriétaire : on peut modifier les droits dessus. Tout le monde peut donc désormais exécuter le binaire pourri qu'on a collé sur notre disque, et pire : tout le monde l'appellera de fait quand il croira appeler la commande ls, commande innocente s'il en est.

      cd ~
      pwd

      On retourne dans notre dossier /home. On ne remonte pas d'un cran : on va dans le répertoire personnel de l'utilisateur courant. pwd sert à vérifier qu'on est dans le /home de l'utilisateur courant, si on en doutait.

      ./binary1

      On exécute binary1. Rien que cette ligne devrait te mettre la puce à l'oreille : tu es en présence d'un programme exécutable, dont tu ne sais rien. Cette ligne l'exécute, tout simplement. Ce que fait binary1 ? Je n'en sais strictement rien, c'est un binaire. Mais je n'irais pas le tester.

      Ça, ce sont les sources. Le mouton que tu veux est dedans.

      • [^] # Re: N'exécute pas ces commandes

        Posté par  . Évalué à 3.

        Je me suis planté dans l'interprétation de la ligne

        echo « cat /challenge/binary/binary1/.passwd » > ./ls

        En fait, ça crée un nouveau fichier nommé ls avec comme contenu l'unique ligne de code entre guillemets, du coup, quand on appellera la commande ls, ça aura pour seul effet d'afficher le contenu du fichier cat /challenge/binary/binary1/.passwd. Pourquoi on fait ça ? Je ne le sais pas, ça ne semble pas permettre une élévation de droits en soi. Peut-être que ça sert à contourner une limitation autre, mais dans ce cas autant appeler directement cat. Quoi qu'il en soit, ça ne change pas ma conclusion : n'exécute pas ces commandes (ou dans une machine virtuelle jetable :P).

        (je voulais éditer mon commentaire mais pas eu le temps, d'où l'auto-réponse)

        Ça, ce sont les sources. Le mouton que tu veux est dedans.

        • [^] # Re: N'exécute pas ces commandes

          Posté par  . Évalué à 3.

          cat /challenge/binary/binary1/.passwd. Pourquoi on fait ça ? Je ne le sais pas, ça ne semble pas permettre une élévation de droits en soi.

          Le programme binary1 est un cracker de mot de passe et écrit le mot de passe deviné dans le fichier .passwd, ainsi quelle n'est pas la stupéfaction de l'utilisateur qui voit s'afficher son mot de passe top secret, son intimité, lors d'un inoffensif ls :)

          En tous cas merci pour tes explications détaillées.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.