Descargo de responsabilidad : esta vulnerabilidad es únicamente para uso educativo. En este exploit, interpreto el papel de la víctima y el software explotado está escrito solo por mí.
Tengo un servidor HTTP simple que quiero explotar con un ataque de desbordamiento de búfer. Estoy enviando una solicitud HTTP maliciosamente diseñada que desborda el búfer de una variable de solicitud a través de la función strcpy, el escenario es que el desarrollador olvidó usar strncpy.
Sin embargo, hay dos desafíos con la sobrescritura de la dirección de retorno en este programa que no sé cómo resolver:
-
Strcpy dejará de copiar cuando encuentre un byte NULO en la cadena de origen. Por lo tanto, ¿es posible sobrescribir la dirección de retorno con una dirección de destino que contiene el byte NULO 0x00? Por ejemplo, si la dirección de destino es 0x407200, debemos escribir \ x00 \ x72 \ x40. Sin embargo, strcpy devolverá el primer \ x00, y no copiará el \ x72 \ x40. Por lo tanto, ¿es posible codificar \ x00 de manera que no haga que strcpy regrese prematuramente?
-
Del mismo modo, el analizador HTTP en mi servidor HTTP divide la solicitud HTTP en tokens con el carácter de espacio \ x20 como delimitador. Por lo tanto, ¿es posible escapar de este carácter, como el terminador NULL anterior, de modo que una dirección que contiene \ x20 no se divida en dos tokens separados por strtok?
Si no, ¿esto es solo una limitación de los ataques de desbordamiento del búfer, ya que, debido a la construcción del programa en cuestión, no siempre es posible sobrescribir la dirección de retorno con una dirección de destino de su elección?