mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 18:14:15 +00:00
58 lines
4.7 KiB
Markdown
58 lines
4.7 KiB
Markdown
# PIE
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Treinamento HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoie o HackTricks</summary>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Informações Básicas
|
|
|
|
Um binário compilado como PIE, ou **Executable de Posição Independente**, significa que o **programa pode carregar em diferentes locais de memória** cada vez que é executado, impedindo endereços codificados.
|
|
|
|
O truque para explorar esses binários está em explorar os **endereços relativos** — os deslocamentos entre partes do programa permanecem os mesmos mesmo se as localizações absolutas mudarem. Para **burlar o PIE, você só precisa vazar um endereço**, normalmente da **pilha** usando vulnerabilidades como ataques de string de formato. Uma vez que você tem um endereço, você pode calcular outros pelos seus **deslocamentos fixos**.
|
|
|
|
Uma dica útil na exploração de binários PIE é que o **endereço base geralmente termina em 000** devido às páginas de memória serem as unidades de randomização, com tamanho de 0x1000 bytes. Este alinhamento pode ser um **verificador crítico se um exploit não estiver funcionando** como esperado, indicando se o endereço base correto foi identificado.\
|
|
Ou você pode usar isso para o seu exploit, se você vazar que um endereço está localizado em **`0x649e1024`** você sabe que o **endereço base é `0x649e1000`** e a partir daí você pode apenas **calcular deslocamentos** de funções e localizações.
|
|
|
|
## Bypasses
|
|
|
|
Para burlar o PIE é necessário **vazar algum endereço do binário carregado**, existem algumas opções para isso:
|
|
|
|
* **ASLR desativado**: Se o ASLR estiver desativado, um binário compilado com PIE sempre **será carregado no mesmo endereço**, portanto o **PIE será inútil** já que os endereços dos objetos sempre estarão no mesmo lugar.
|
|
* Ser **dado** o vazamento (comum em desafios CTF fáceis, [**verifique este exemplo**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
|
|
* **Forçar os valores de EBP e EIP** na pilha até vazar os corretos:
|
|
|
|
{% content-ref url="bypassing-canary-and-pie.md" %}
|
|
[bypassing-canary-and-pie.md](bypassing-canary-and-pie.md)
|
|
{% endcontent-ref %}
|
|
|
|
* Use uma vulnerabilidade de **leitura arbitrária** como [**string de formato**](../../format-strings/) para vazar um endereço do binário (por exemplo, da pilha, como na técnica anterior) para obter a base do binário e usar deslocamentos a partir daí. [**Encontre um exemplo aqui**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
|
|
|
|
## Referências
|
|
|
|
* [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie)
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Treinamento HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoie o HackTricks</summary>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
{% endhint %}
|