Print Stack Canary
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Imagina una situación donde un programa vulnerable a desbordamiento de pila puede ejecutar una función puts apuntando a parte del desbordamiento de pila. 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 la pila hasta solo 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 búfer.
Ejemplos de CTF:
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 filtrar. 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')
32 bits, ARM, sin relro, canario, nx, sin pie. Desbordamiento con una llamada a puts en é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)
Con una lectura arbitraria como la que proporcionan las 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 abusar de las cadenas de formato para leer direcciones de memoria arbitrarias en:
Format StringsEste desafío abusa de una manera muy simple de una cadena de formato para leer el canario de la pila
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)