Imprimir Stack Canary
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.
Ampliar stack impreso
Imagina una situaci贸n donde un programa vulnerable a desbordamiento de stack puede ejecutar una funci贸n puts apuntando a parte del desbordamiento de stack. El atacante sabe que el primer byte del canario es un byte nulo (\x00
) y el resto del canario son bytes aleatorios. Entonces, el atacante puede crear un desbordamiento que sobrescriba el stack hasta justo el primer byte del canario.
Luego, el atacante llama a la funcionalidad puts en medio de la carga 煤til que imprimir谩 todo el canario (excepto el primer byte nulo).
Con esta informaci贸n, el atacante puede elaborar y enviar un nuevo ataque conociendo el canario (en la misma sesi贸n del programa).
Obviamente, esta t谩ctica es muy restringida ya que el atacante necesita poder imprimir el contenido de su carga 煤til para exfiltrar el canario y luego ser capaz de crear una nueva carga 煤til (en la misma sesi贸n del programa) y enviar el verdadero desbordamiento de buffer.
Ejemplos de CTF:
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 bits, ASLR habilitado pero sin PIE, el primer paso es llenar un desbordamiento hasta el byte 0x00 del canario para luego llamar a puts y filtrarlo. Con el canario se crea un gadget ROP para llamar a puts y filtrar la direcci贸n de puts desde el GOT y luego un gadget ROP para llamar a
system('/bin/sh')
- https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 bits, ARM, sin relro, canario, nx, sin pie. Desbordamiento con una llamada a puts sobre 茅l para filtrar el canario + ret2lib llamando a
system
con una cadena ROP para hacer pop a r0 (arg/bin/sh
) y pc (direcci贸n de system)
Lectura Arbitraria
Con una lectura arbitraria como la proporcionada por cadenas de formato podr铆a ser posible filtrar el canario. Revisa este ejemplo: https://ir0nstone.gitbook.io/notes/types/stack/canaries y puedes leer sobre el abuso de cadenas de formato para leer direcciones de memoria arbitrarias en:
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- Este desaf铆o abusa de una manera muy simple de una cadena de formato para leer el canario del stack
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.