Dans cet article, nous analyserons: qu'est-ce qu'un descripteur de fichier, comment les processus accèdent-ils à certains flux d'entrée / sortie et résolvent la première tâche à partir du site
pwnable.kr .
Information organisationnelleSurtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:
- PWN;
- cryptographie (Crypto);
- technologies de réseau (réseau);
- reverse (Reverse Engineering);
- stéganographie (Stegano);
- recherche et exploitation des vulnérabilités WEB.
En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et les réseaux locaux, réalisation de pentests et écriture d'exploits.
Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une
chaîne dans Telegram et un
groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations
personnelles et répondrai à tout le monde .
Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.
Descripteurs de fichiers
Un descripteur de fichier est un nombre non négatif qui identifie un flux d'entrée / sortie qui peut être associé à des fichiers, des répertoires ou des sockets.

La table des fichiers système (SFT - System File Table) et la table des inodes (INode Table) contiennent les informations nécessaires au processus pour accéder aux données du fichier. Si plusieurs processus demandent l'accès au même fichier, chacun de ces processus recevra son propre élément de la table de fichiers système, malgré le fait qu'ils fonctionneront avec le même fichier.
Le noyau fournit le descripteur de fichier pour le processus lorsqu'il accède au fichier. Nous pouvons dire qu'un descripteur de fichier est un index d'un tableau de fichiers ouverts qui est unique à chaque processus. Mais les trois premiers indices sont fermement fixés:
- 0 - entrée standard (stdin);
- 1 - sortie standard (sortie standard);
- 2 - flux d'erreur standard (stderr).
Ainsi, les fonctions gets () et printf () de la bibliothèque standard C utilisent stdin et stdout, ce qui permet aux shells de rediriger correctement l'entrée et la sortie des processus.
Solution d'emploi FD
Nous cliquons sur la première icône avec la signature fd, et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

Une fois connecté, nous voyons la bannière correspondante.

Voyons quels fichiers se trouvent sur le serveur, ainsi que les droits dont nous disposons.
ls -l

Ainsi, nous pouvons lire le code source du programme, car il y a un droit de lecture pour tout le monde, et exécuter le programme fd avec les droits du propriétaire (le bit collant est défini). Regardons le code source.

Il résulte du code que le programme prend un nombre comme paramètre, en soustrait 0x1234 et l'utilise comme descripteur pour obtenir une chaîne qui devrait être égale à "LETMEWIN".

Ainsi, nous devons envoyer au programme la chaîne «LETMEWIN» via le flux d'entrée standard (stdin). Pour cela, le descripteur transmis à la fonction read () doit être 0. Autrement dit, le nombre 0x1234 doit être utilisé comme paramètre de programme. Convertissez-le en décimal.

Exécutez maintenant le programme avec le paramètre 4660, déposez la ligne souhaitée et décrochez le drapeau.

En conséquence, nous obtenons le premier point.

Pwnable.kr commence par une tâche aussi simple, grâce à laquelle il était nécessaire de traiter des descripteurs. Rendez-vous dans les articles suivants!
Nous sommes dans un canal de télégramme: un
canal dans Telegram .