Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. Comme vous le devinez surement les gadgets dont on aura besoin sont syscall; ret et mov eax,0xf; ret ! Maintenant passons à l’explication de comment l’exploitation se fera !
  2.  
  3. Tout d’abord on va récuperer les addresses de nos gadgets.
  4. Ensuite on va leak l’addresse de buffer, pour le coup notre programme ne contient aucun leak (format string ou autre) mais le programme printf bien gentiment l’addresse de buffer !
  5. On va rendre le buffer executable, on va créer une “trame de signal” qui pourra faire le syscall MPROTECT sur l’addresse de buffer (vous allez voir pas d’inquietude si vous ne comprenez pas ! )
  6. On me un shellcode dans buffer et enfin on saute sur ce shellcode !
  7.  
  8. D’abord compilons notre programme: quasar@pwn:~/Bureau/pwn$ gcc -o sop sop.c -no-pie
  9.  
  10. Ensuite on va utiliser ROPgadget pour récuperer nos gadgets:
  11. ...
  12. Où est notre ret ? Pour éviter tout problème on va utiliser pwndbg pour récuperer l’addresse de ce gadget:
  13. ...
  14. Finalement l’addresse était totalement clean deuxième gadget: 0x000000000040060a : syscall
  15. Deuxième chose, on n'a toujours pas calculé notre offset :’) :
  16. ...
  17. on aurait pu faire de façon plus propre mais osef ¯_(ツ)_/¯
  18. On peut commencer à écrire notre exploit:
  19. ...
  20. Passons aux choses sérieuses ! Il faut rendre l’addresse de buffer exécutable, pour cela créons une trame de signal comme cela, merci pwntools !
  21. ...
  22. Maintenant que vous êtes tous en mode “Hein ? C koi ça ? “ (fin à part si vous êtes là juste pour vérifier que je raconte pas de la merde et que vous maitrisez dejà la technique )
  23.  
  24. première ligne on crée une “fausse” trame de signal, on met rax à 10 qui est le nombre du syscall de MPROTECT, on met l’addresse de leak dans rdi, c’est là qu’on met l’addresse qui va être rendu executable, et enfin dans rip on met l’addresse de syscall evidemment on va donc exécuter mprotect avec ce qu’on a mit dans nos différents registres (on ne va pas s’attarder sur ça, voici la page manuel de mprotect)
  25. ...
  26. Bon nos droits ne changent pas mais on n'avait pas donné de droits au binaire :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement