Introduction à gdb

Que le programmeur qui n’a jamais mis des printf, var_dump, echo, print, System.out, console.log, cout plein son code pour savoir d’où venait un bug se dénonce. Que le programmeur qui ne s’est jamais arraché les cheveux pour un programme qui plantait violemment sans crier garde me jette la pierre (C’est une expression, hein !). Heureusement, il existe pléthore de débogueurs (debuggers), libres ou non, dont un qui est particulièrement reconnu, le débogueur de GNU nommé GDB (GNU Project Debugger), que nous allons introduire dans cette introduction.


Lire la suite →

Assembleur - Notions de base

Salut tout le monde, voici un nouvel article qui va permettre, je pense, d’éclaircir bon nombre de notions que j’ai déjà abordées dans mes articles précédents, et qui permettront également de faciliter la compréhension des articles à venir.

Cet article à un but modeste : Comprendre la sortie d’un disass main sur un programme relativement simple (Mais si ! vous savez, cette commande dans gdb qui permet de désassembler un - i.e. produire le code assembleur d’un - binaire)


Lire la suite →

Buffer Overflow

Nous allons ici expliquer ce qui se cache derrière la notion de buffer overflow, avant de donner deux exemples différents d’exploitation dans ce tuto “buffer overflow”:

  1. Cas d’un buffer qui alloue suffisamment d’espace pour contenir un shellcode avant l’adresse de retour sur la pile
  2. Cas d’un buffer trop petit pour contenir un shellcode avant l’adresse de retour sur la pile

Lire la suite →

[C] Pointeurs de fonction

Voici un petit mémo sur les pointeurs de fonction. Pour rappel, un pointeur est une variable qui contient une adresse mémoire d’une donnée. La donnée peut être un int, un float, un tableau, etc. Mais ça peut aussi être l’adresse d’une fonction. Mais qu’est ce que ça veut dire que l’adresse d’une fonction ?


Lire la suite →

L'espace à notre échelle

L’espace, c’est grand, très grand. Dès qu’on commence à parler d’univers, on arrive rapidement à parler en années-lumières, en millions, milliards, et plus. Mais finalement, on ne se rend compte de rien, on ne sait pas se représenter ça. Ca veut dire quoi 15 milliards d’années lumière ? Et d’ailleurs, c’est quoi une année lumière ? Pour avoir une idée plus précise, il suffit de diviser les distances par un milliard, et on se rend rapidement compte de tout ça. Pour information, une année lumière, c’est une distance qui vaut à la distance parcourue par la lumière en une année, ou 394 milliards de kilomètres.


Lire la suite →

Fonctionnement de la pile

La pile (dont on a parlé dans l’article sur la gestion de la mémoire a une structure LIFO (Last In, First Out).


Lire la suite →

Gestion de la mémoire

Aujourd’hui, je vais tenter de rassembler tout ce que j’ai pu comprendre sur la gestion de la mémoire lors de l’exécution d’un programme. Cet article est écrit en vu de comprendre l’exploitation de certaines failles applicatives, telles que le buffer overflow, le heap overflow ou encore la format string, failles que je décrirai dans les prochains articles.


Lire la suite →

Le hacking, c'est quoi ?

Bonjour à tous, et bienvenue sur mon tout premier article.

Je pense qu’il faut commencer par certaines bases si je veux que le fil des articles soit cohérent.

Or, l’une des notions qui me semble d’une importance primordiale, c’est le hacking. C’est pourquoi, ici, je vais expliciter clairement ce que, à mon sens, signifie le terme hacking.


Lire la suite →