web-dev-qa-db-fra.com

Programmation axée sur le retour (ROP) - Pourquoi contourner-t-il ASLR et qu'est-ce que POP / POP / RET?

J'essaie de comprendre Rop et de lutter contre les deux questions suivantes:

  • Je lis souvent que Rop contourne Aslr et Dep. Bien que ce soit clair pour moi, ROP est un moyen idéal pour éviter de DEP, je ne vois pas comment ça contourne ASLR. Est-ce parce que la section de code n'est pas randomisée?

  • Je lis aussi beaucoup sur ces gadgets Pop/Pop/Ret, mais je ne comprends pas pourquoi ils sont nécessaires. Un gadget ne se termine-t-il pas dans un coup suffisant?

3
user66875

ROP n'est qu'un dérivement pour DEP-ASLR est la protection contre ROP. La section de code est randomisée et c'est pourquoi vous ne pouvez pas (normalement) utiliser ROP contre ASLR - pour le contourner en utilisant ROP, vous aurez besoin d'une fuite d'informations qui décrit comment l'espace d'adressage a été modifié.

Quant aux gadgets POP/POP/RET, ceux-ci sont utilisés dans le contexte de l'utilisation de SEH pour l'exécution de code - un moyen de contourner certaines méthodes d'analyse/de protection autres que DEP et ASLR.

Voici une explication pour Pop, Pop, RET dans le contexte de SEH: https://dkalemis.wordpress.com/2010/10/27/Le-need-for-a-pop-pop-et-instruction Peut-être / . En ce qui concerne ROP, la meilleure ressource que je connaisse sont les tutoriels de Corelan: https://www.corelan.be/index.php/2010/06/16/exploit-witing-tatuuteur-Part-10-chaining- DEP-with-rop-the-rubikstm-cube

6
AdrianH