Este artículo presenta principalmente el principio y la solución de la vulnerabilidad de carga de archivos chr (0) de ASP. La vulnerabilidad chr (0) puede omitir la verificación de extensión al cargar archivos. Es una vulnerabilidad muy dañina que puede consultarse.
Cuando utilizamos ASP para desarrollar la función de carga de archivos, para evitar que los usuarios carguen programas troyanos, a menudo restringimos la carga de algunos archivos. Un método común es determinar si la extensión del archivo cargado cumple con las regulaciones. la función de cadena correcta para recuperar el archivo cargado Los últimos cuatro dígitos del nombre del archivo se pueden determinar fácilmente, pero hay una vulnerabilidad en ellos, que es muy peligrosa, y es la vulnerabilidad chr(0). detalles.
1. Primero, explique qué es chr(0).
En ASP, puede usar la función chr() para llamar al código ASCII, donde chr(0) significa que la llamada es un carácter final. En pocas palabras, cuando una cadena contiene el carácter chr(0), solo el frente de chr. (0) se pueden generar caracteres, los caracteres después de chr(0) no se generarán. Dé un ejemplo para ilustrar:
Copie el código de código de la siguiente manera:
<%response.write "HTMer.com"&chr(0)&"Bienvenido"%>
Si ejecuta el código anterior en IIS, ¿solo generará "HTMer.com"? La siguiente "Bienvenida" desapareció porque cuando se lee chr(0), se considera que la declaración ha finalizado.
2. Principio de carga de vulnerabilidad Chr (0):
Supongamos que he configurado el programa ASP para cargar sólo archivos jpg. Así es como uso la vulnerabilidad chr(0) para cargar el troyano ASP:
Supongamos aquí que hay un archivo troyano ASP llamado htmer.asp. Le cambié el nombre a htmer.asp .jpg. ¿Viste un espacio en el medio? Cuando obtenemos el nombre del archivo, este espacio se considera chr(0). Cuando usamos right("htmer.asp .jpg",4) para verlo, de hecho es .jpg, pero cuando realmente leemos htmer.asp. jpg, y al generar el archivo, el sistema cree que ha terminado cuando lee chr (0), por lo que no se puede generar el .jpg posterior. El nombre del archivo cargado se genera automáticamente como htmer.asp. Creo que deberías saberlo.
3. Métodos para resolver la vulnerabilidad chr(0)
La solución es verificar si hay chr(0) en el nombre del archivo cargado y reemplazar directamente el carácter chr(0) con la función de reemplazo en ASP.