hacktricks/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md

3.7 KiB

WWW2Exec - atexit()

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

__Struktury atexit()

{% hint style="danger" %} Obecnie jest bardzo dziwne, aby to wykorzystać! {% endhint %}

atexit() to funkcja, do której inne funkcje są przekazywane jako parametry. Te funkcje zostaną wykonane podczas wykonywania exit() lub powrotu z main.
Jeśli możesz zmodyfikować adres którejkolwiek z tych funkcji, aby wskazywał na shellcode na przykład, zdobędziesz kontrolę nad procesem, ale obecnie jest to bardziej skomplikowane.
Obecnie adresy funkcji do wykonania są ukryte za kilkoma strukturami, a ostatecznie adres, do którego wskazują, nie są adresami funkcji, ale są zaszyfrowane za pomocą XOR i przesunięć z losowym kluczem. Dlatego obecnie ten wektor ataku nie jest bardzo przydatny przynajmniej na x86 i x64_86.
Funkcja szyfrowania to PTR_MANGLE. Inne architektury takie jak m68k, mips32, mips64, aarch64, arm, hppa... nie implementują funkcji szyfrowania, ponieważ zwracają to samo, co otrzymały jako wejście. Dlatego te architektury mogą być podatne na ten wektor ataku.

Możesz znaleźć dogłębne wyjaśnienie, jak to działa na https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: