hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aws2exec-.dtors-and-.fini_array.md
2024-12-12 13:56:11 +01:00

4.3 KiB

AWS2Exec - .dtors & .fini_array

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

.dtors

{% hint style="danger" %} Hoje em dia é muito estranho encontrar um binário com uma seção .dtors. {% endhint %}

Os destructors são funções que são executadas antes do programa terminar (após a função main retornar).
Os endereços dessas funções são armazenados dentro da seção .dtors do binário e, portanto, se você conseguir escrever o endereço para um shellcode em __DTOR_END__, isso será executado antes que o programa termine.

Obtenha o endereço desta seção com:

objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”

Geralmente, você encontrará os marcadores DTOR entre os valores ffffffff e 00000000. Então, se você apenas ver esses valores, isso significa que não há nenhuma função registrada. Portanto, sobrescreva o 00000000 com o endereço do shellcode para executá-lo.

{% hint style="warning" %} Claro, você primeiro precisa encontrar um lugar para armazenar o shellcode para depois chamá-lo. {% endhint %}

.fini_array

Essencialmente, esta é uma estrutura com funções que serão chamadas antes do programa terminar, como .dtors. Isso é interessante se você puder chamar seu shellcode apenas pulando para um endereço, ou em casos onde você precisa voltar para main novamente para explorar a vulnerabilidade uma segunda vez.

objdump -s -j .fini_array ./greeting

./greeting:     file format elf32-i386

Contents of section .fini_array:
8049934 a0850408

#Put your address in 0x8049934

Note que isso não criará um loop eterno porque quando você voltar para a função principal, o canário notará, o final da pilha pode estar corrompido e a função não será chamada novamente. Assim, com isso, você poderá ter 1 execução a mais da vulnerabilidade.

{% hint style="danger" %} Note que com Full RELRO, a seção .fini_array é tornada somente leitura. {% endhint %}

{% hint style="success" %} Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}