(french version here)

Introduction

During my work with Gustavo Grieco, I occasionally have to study some vulnerability. Today I will talk about one that I recently studied, I think this one is quite instructive.

The vulnerability is in xa (package xa65, version  2.3.5), if you want to do the manipulation in the same environment, I suggest you to dl the VM from the ocean project : https://github.com/neuromancer/ocean-data (if you need help to configure it, you can send me a message, or directly contact the author, he is reactive)

The crash

The starting point is to launch xa with a long string as parameter :

We obtain a « Segmentation fault ».

Read More →

(english version here)

Introduction

Durant mon travail avec Gustavo Grieco, il arrive que j’ai à analyser l’exploitabilité de certaines vulnérabilités.
Aujourd’hui on va en voir une que j’ai étudiée récemment et qui est, je pense, assez instructive (j’ai fait quelques erreurs en l’analysant donc si ça a été instructif pour moi, ça le sera sûrement pour quelqu’un d’autre aussi :p).

La vulnérabilité se trouve dans l’utilitaire xa (package xa65, version 2.3.5), si vous voulez refaire la manipulation dans les mêmes conditions que moi, je vous invite à télécharger la VM issue du projet ocean : https://github.com/neuromancer/ocean-data (si vous voulez de l’aide pour l’installer/configurer, faites-moi signe, ou vous pouvez contacter l’auteur directement, il est assez réactif)

Le crash

Le point de départ est simplement de lancer xa avec en argument une grande chaîne de caractères :

On obtient alors une « Segmentation fault ».

Read More →

Un petit résumé de la séance Securimag du mercredi 8 Octobre, consacrée au Buffer Overflow.

1. Nous avons commencé par rappeler la segmentation de la mémoire, le fonctionnement du segment text, et surtout de la pile lors de l’exécution d’un programme.
Le segment text contient simplement les instructions machine qui constituent le programme.
La pile ( Stack ) est plus complexe. Chaque fonction y possède sa propre Stack Frame ( dont les bornes en mémoire sont contenues dans les registres ESP et EBP ) dans laquelle sont stockées plusieurs variables ( locales, globales, paramètres, … ) ainsi que deux adresses importantes : SFP ( qui est la sauvegarde de la précédente valeur de EBP, c’est à dire la borne supérieur de la Stack Frame de la fonction appelante ) et l' »Adresse de retour » de la fonction, qui on le rappelle sauvegarde l’adresse de l’instruction que le processeur devra exécuter à la sortie de la fonction, après le return.

Read More →

Pièces jointes