Post

Partie 7 - 🏆 Challenge - exploitation du tcache (4/4)

🏆 Challenge : exploitation du tcache (4/4)

En s’intĂ©ressant Ă  un seul type de corbeille, vous avez pu constater la quantitĂ© importante d’informations qu’il convient de connaĂźtre pour comprendre le fonctionnement du tcache en fonction des multiples versions de la libc đŸ€Ż.

Il est désormais temps de passer à la pratique afin de ne pas oublier ces connaissances fraßchement acquises.

Ce challenge est plutĂŽt Ă  considĂ©rer comme un exercice de synthĂšse. HonnĂȘtement, il n’est pas trĂšs compliquĂ© et si vous avez saisi les bases du fonctionnement du tcache, vous devriez le rĂ©ussir sans souci.

đŸ’» Contexte d’exĂ©cution

Afin de se placer dans le contexte d’exĂ©cution prĂ©vu pour cet exercice, il est nĂ©cessaire de :

  • activer l’ASLR ;
  • atteindre l’objectif en dehors d’un dĂ©bogueur ;
  • utiliser la version de la glibc 2.31-0ubuntu9.16_amd64.

Cette version de la glibc est facilement tĂ©lĂ©chargeable avec glibc-all-in-one. N’hĂ©sitez pas Ă  jeter un Ɠil au chapitre Comment compiler et dĂ©boguer un programme avec une version spĂ©cifique de la libc si vous avez oubliĂ© comment faire.

Il est fortement recommandĂ© de rĂ©soudre le challenge dans le conteneur Docker afin d’éviter d’avoir Ă  tĂ©lĂ©charger la bonne version de la libc et afin de pouvoir obtenir un environnement d’exploitation correct pour la rĂ©alisation de ce challenge.

đŸ’« Lancer le challenge

Ci-dessous les commandes permettant de lancer le challenge :

  • construction du conteneur : docker build -t pwn-chall-tcache .;
  • lancement du conteneur et du challenge :
1
docker run -it --rm -p 1234:1234 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined pwn-chall-tcache

Le port accessible est le suivant :

  • 1234 : port qu’il est possible d’utiliser pour dĂ©boguer Ă  distance avec gdbserver.

đŸ€“ Quelques conseils

  • Analysez les diffĂ©rentes fonctionnalitĂ©s du programme une par une
  • En fonction de la version de la glibc et des protections en place, prenez le temps de rĂ©flĂ©chir aux potentiels problĂšmes auxquels vous pourriez faire face ainsi qu’aux moyens de les contourner
  • L’objectif Ă  atteindre est plus facile que de devenir root. Il s’agit simplement de mettre en Ɠuvre ce que vous avez appris lors du prĂ©cĂ©dent chapitre. Si vous n’arrivez pas Ă  trouver comment exploiter le programme, n’hĂ©sitez pas Ă  y refaire un tour 😉
  • N’hĂ©sitez pas Ă  ouvrir gdb dans votre script d’exploitation avec la commande ci-dessous, afin de voir ce qui est en train de se passer dans le tas :
1
2
3
gdb.attach(io, '''  
b *0xadresse   
''')

Astuce pwntools : Vous pouvez changer la version de gdb que pwntools utilise en créant un lien symbolique /usr/bin/pwntools-gdb.

Par exemple : sudo ln -s /usr/bin/gdb-gef++ /usr/bin/pwntools-gdb

💡 Indices

1
Vm9pY2kgcXVlbHF1ZXMgaW5kaWNlcyBxdWkgZGV2cmFpZW50IHZvdXMgcGVybWV0dHJlIGQnYXZhbmNlciBzaSB2b3VzIMOqdGVzIGJsb3F1w6lzIGV0IHF1ZSB2b3VzIG5lIHZveWV6IHBhcyBjb21tZW50IGFsbGVyIHBsdXMgbG9pbi4=

💡 Indice n°1

1
T8O5IGVzdCBsb2NhbGlzw6kgbGUgY29udGVudSBkZSBsYSB2YXJpYWJsZSBnbG9iYWxlIGBnb2FsYCA/IERhbnMgbGEgcGlsZSA/IERhbnMgbGUgdGFzID8gRGFucyBsYSBzZWN0aW9uIGRlIGRvbm7DqWVzID8gQXV0cmUgPw==

💡 Indice n°2

1
UHJlbmV6IGJpZW4gbGUgdGVtcHMgZGUgY29tcHJlbmRyZSBsZSBmb25jdGlvbm5lbWVudCBkZXMgZGlmZsOpcmVudGVzIGFjdGlvbnMgZHUgcHJvZ3JhbW1lLiBRdWVsbGVzIHNvbnQgbGVzIGRpZmbDqXJlbmNlcyBlbnRyZSBlbGxlcyA/IENvbW1lbnQgc29udCBnw6lyw6llcyBsZXMgZG9ubsOpZXMgPwoKWSBhLXQtaWwgdW5lIGRlcyBhY3Rpb25zIHF1aSBlc3QgcGx1cyB2dWxuw6lyYWJsZSBxdWUgbGVzIGF1dHJlcyA/

💡 Indice n°3

1
QXZlYyBsJyoqQVNMUioqLCBub3VzIG5lIHBvdXZvbnMgcGFzIGNvbm5hw650cmUgw6AgbCdhdmFuY2UgbGUgY29udGVudSBkZSBgZmRgLiBJbCBlc3QgcG9zc2libGUgZGUgbW9kaWZpZXIgY2VydGFpbnMgb2N0ZXRzIGRlIHBvaWRzIGZhaWJsZSBtYWlzLCBlbiByYWlzb24gZGUgbCcqKkFTTFIqKiwgdW4gcGV1IGRlIGZvcmNlIGJydXRlIHNlcmEgbsOpY2Vzc2FpcmUuCgpJbCBmYXVkcmFpdCB0cm91dmVyIHVuIG1veWVuIGQnb2J0ZW5pciB1biAqbGVhayogYWZpbiBkZSBwb3V2b2lyIG1vZGlmaWVyIGBmZGAgc2FucyBhdm9pciByZWNvdXJzIMOgIGxhIGZvcmNlIGJydXRlIC4uLg==

💡 Indice n°4

1
RW4gdXRpbGlzYW50IHVuZSBkZXMgdnVsbsOpcmFiaWxpdMOpcyBkdSBgdGNhY2hlYCBkdSBwcsOpY8OpZGVudCBjaGFwaXRyZSwgZXN0LWlsIHBvc3NpYmxlIGRlIGNvbnRyw7RsZXIgbGEgcHJvY2hhaW5lIGFsbG9jYXRpb24gPw==
This post is licensed under CC BY 4.0 by the author.