PIE
Reading time: 3 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
Informaci贸n B谩sica
Un binario compilado como PIE, o Ejecutable Independiente de Posici贸n, significa que el programa puede cargarse en diferentes ubicaciones de memoria cada vez que se ejecuta, evitando direcciones codificadas.
El truco para explotar estos binarios radica en explotar las direcciones relativas: los desplazamientos entre partes del programa permanecen iguales incluso si las ubicaciones absolutas cambian. Para eludir PIE, solo necesitas filtrar una direcci贸n, t铆picamente desde la pila utilizando vulnerabilidades como ataques de formato de cadena. Una vez que tienes una direcci贸n, puedes calcular otras por sus desplazamientos fijos.
Una pista 煤til al explotar binarios PIE es que su direcci贸n base t铆picamente termina en 000 debido a que las p谩ginas de memoria son las unidades de aleatorizaci贸n, con un tama帽o de 0x1000 bytes. Esta alineaci贸n puede ser un chequeo cr铆tico si un exploit no est谩 funcionando como se esperaba, indicando si se ha identificado la direcci贸n base correcta.
O puedes usar esto para tu exploit, si filtras que una direcci贸n est谩 ubicada en 0x649e1024
sabes que la direcci贸n base es 0x649e1000
y desde ah铆 puedes calcular los desplazamientos de funciones y ubicaciones.
Bypasses
Para eludir PIE es necesario filtrar alguna direcci贸n del binario cargado, hay algunas opciones para esto:
- ASLR deshabilitado: Si ASLR est谩 deshabilitado, un binario compilado con PIE siempre se cargar谩 en la misma direcci贸n, por lo tanto PIE ser谩 in煤til ya que las direcciones de los objetos siempre estar谩n en el mismo lugar.
- Ser dado el leak (com煤n en desaf铆os CTF f谩ciles, ver este ejemplo)
- Fuerza bruta de los valores EBP y EIP en la pila hasta que filtren los correctos:
- Usar una vulnerabilidad de lectura arbitraria como formato de cadena para filtrar una direcci贸n del binario (por ejemplo, desde la pila, como en la t茅cnica anterior) para obtener la base del binario y usar desplazamientos desde all铆. Encuentra un ejemplo aqu铆.
Referencias
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.