Write ups challenges CSAW 2018

Write ups challenges CSAW 2018

Dans cette articles se trouvera les  write ups de certains challenges que j’ai résolus du ctf csaw 2018.

Bigboy


Catégorie: Pwn

Points: 25 points

Description : Only big boi pwners will get this one!

Le but de ce challenge est de remplacer la valeur 0xDEADBEEF par la valeur 0xCAF3BAEE à l’aide d’un buffer overflow pour que le binaire nous donne un shell, voici le code assembleur du binaire :

J’ai tout d ‘abord posé un breakpoint sur la comparaison tout en envoyant un pattern cyclique dans la fonction read pour trouver l ‘offset qui est de 20 caractères puis j’ai ecris 0xCAF3BAEE à l’envers car on est dans une architecture little-endian.

Voici le code exploit.sh :

et le flag :

Challenge réussi !

Get it ?


Catégorie: Pwn

Points: 50 points

Description : Do you get it?

Ce binaire appelle simplement la fonction gets qui ne vérifie pas que le buffer entré ne dépasse pas la taille du buffer où on le stocke :

C’est donc un simple stack buffer overflow : nous devons écraser l’adresse de retour sur la pile par l’adresse de la fonction « give_shell » qui nous donne un shell (0x4005B6).

Il ne nous reste plus qu´à trouver la taille du buffer à envoyer pour écraser l’adresse de retour à l’aide d’un pattern cyclique (40 caractères) puis écrire notre exploit :

Lançons notre exploit :

Challenge réussi !

shell->code


Catégorie: Pwn

Points: 100 points

Description : Linked lists are great! They let you chain pieces of data together.

Ce challenge consiste en un stack buffer overflow, seulement nous ne pouvons par ecrire notre shellcode dans un seul buffer car nous  n’avons que 2 buffers de 15 octets disponible.

Nous allons donc diviser ce buffer en 2 et sautant du premier au deuxième à l’aide de l’instruction jmp 0x14 { opcodes \xeb\x12 } :

Lançons notre exploit :

Challenge réussi !

Ldab


Catégorie: Web

Points: 50 points

Description :dab http://web.chal.csaw.io:8080

Ce challenge est un simple injection ldap. En étudiant le résultat de différentes injection nous sommes arrivé à la conclusion que la requête ldap est la suivante :

Il suffit de rendre le morceau de la requête qui vérifie que le GivenName est différent de Flag optionnel en y injecter un or Givename=*

Le payload est donc : Flag))(|(GivenName=*

Challenge réussi !

Add a Comment

Votre adresse de messagerie ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.