Recomendado: la optimización de ASP utiliza la unión de datos para lograr páginas web dinámicas de alta eficiencia La unión de datos no es un concepto nuevo, y IE 4.0 ya ha proporcionado un rico apoyo para ello. Sin embargo, el enlace de datos no se valora como merece, y muchos desarrolladores parecen estar más dispuestos a usar métodos de secuencias de comandos del lado del servidor. Sin embargo, de hecho
Objetivo de agrietamiento: descifrar una contraseña de inicio de sesión de ASP Troya encriptada. Dado que no hay una descripción de la versión en el caballo troyano, no sé cómo se llama el troyano.
Ideas de agrietamiento: Dos tipos: reemplace el texto cifrado con la contraseña cifrada y resuelva reversamente la contraseña utilizando el algoritmo de cifrado y cifrado.
El primero no es una verdadera grieta en absoluto. Si no puede obtener el código fuente de ASP, puede decir que no tengo posibilidades de descifrar la contraseña. Un amigo de China dijo que había obtenido permisos web, pero que no podía modificar la página de inicio. Descubrió que había un troyano ASP, pero la contraseña estaba encriptada. De acuerdo, hay demasiadas tonterías, así que prepárate, esta explicación será bastante larga.
Los códigos clave para la verificación de contraseña de inicio de sesión ASP Trojan son los siguientes:
Si Epass (TRIM (request.form (contraseña))) = Q_ux624q P entonces Response.cookies (contraseña) = 8811748 ... |
Es obvio que la función EPASS se usa para cifrar la contraseña de entrada y luego comparar el texto cifrado obtenido con el texto cifrado original. Si tiene un poco de programación básica, especialmente VB, entonces el algoritmo de cifrado en Epass será claro de un vistazo. Si no, entonces no importa. Creo que entenderás rápidamente después de mi explicación. En la función, la variable que guarda la contraseña es pasar. pase & zxcvbnm,./ Conecte el contenido en pase con zxcvbnm ,./ para obtener una nueva cadena. Izquierda (pase y zxcvbnm ,./, 10) toma los 10 dígitos principales. La función Strreverse invierte el orden de cadena de 10 bits resultante. Len (pase) obtiene la longitud de la contraseña. A continuación se muestra un bucle. La longitud de paso del código ASCII de cada bit en la cadena obtenida se redondea (la posición del carácter *1.1), y luego el valor resultante se convierte en caracteres y se vuelve a conectar. Finalmente, todos los caracteres con 'en la cadena obtenida se reemplazan con B, de modo que se genera el texto cifrado. Si extraemos el algoritmo de cifrado y reemplazamos el texto cifrado original con nuestro propio texto cifrado, la contraseña correspondiente también se convertirá en su contraseña. Pero dije que esto no es una verdadera grieta.
Si escribimos el amor, el proceso de cifrado es el siguiente:
| amar loveZxcvbnm,./'Conexión Lovezxcvbn 'Take the Top 10 Orden de nbvcxzevol invertido norte 110 (ASCII) -4 (número de dígito) int (1 (posición)*1.1) = 107 El código ASCII de 107 es K, y así sucesivamente, y el último texto cifrado: k`ucy Hzts |
Podemos invertir la contraseña a través de algoritmos de cifrado y cifrado, y presionarla desde el último paso del algoritmo. El último paso es reemplazar todo con B, si es necesario reemplazar B de vuelta, la respuesta es no. Mientras podamos obtener el último texto cifrado, es posible que la contraseña sea diferente. Si hay 10 BS, entonces el número de contraseñas originales es de 2 a la potencia de 10. Aunque solo hay una contraseña original, 1024 contraseñas son todas correctas. Si desea descifrarlo perfectamente, puede intentar escribir todas las combinaciones usted mismo. Entonces, este paso se puede ignorar, el algoritmo anterior es muy claro.
| Chr (ASC (Mid (Temppass, J, 1))-Templen int (J*1.1)) |
Solo necesitamos cambiar el y, por un tiempo.
| Chr (ASC (Mid (Temppass, J, 1)) Templen-INT (J*1.1)))) |
Pero hay otro problema. No sabemos la longitud de la contraseña por adelantado, por lo que no importa. Afortunadamente, la contraseña está entre 1-10 dígitos y no es demasiado larga. Luego podemos usar un bucle de 1 a 10 para encontrar todas las contraseñas posibles y luego revertir el orden de ellas utilizando la función Strreverse. Entonces, ¿cómo determinamos qué contraseña obtenemos al final? Puede verificar si hay los primeros dígitos de ZXVBNM y./ después de que la contraseña se excluya desde el final. Entonces esta es la contraseña real. Entonces, si la contraseña es de 10 bits, será correcto para siempre porque no hay conexión detrás de ella. Entonces podemos obtener dos respuestas.
La siguiente es la función de descifrado que escribí:
función ccode (código) para templen1 = 1 a 10 mmcode = para j = 1 a 10 mmcode = mmcode chr (asc (mid (código, j, 1)) TEMPLEN1-INT (J*1.1)) próximo Ccode = strreverse (mmcode) Respuesta Si Mid (Ccode, Templen1 1,10-Templen1) = izquierda (ZXCVBNM ,./, 10-Templen1) y Templen1 <> 10 entonces Result = Left (Ccode, Templen1) próximo Respuesta. Escribe la última contraseña: y resultado función final |
Ok, el algoritmo puede no ser completamente dominado en tan poco tiempo, lo cual es normal. Por lo tanto, adjuntaré las instrucciones y el código fuente ASP cifrado y descifrado al paquete comprimido. Por favor, retírelo y estudíelo con cuidado. Del mismo modo, la contraseña 10 es eternamente correcta. Luego tomemos el texto cifrado original en ASP y veamos cuáles serán los resultados.
Compartir: Use el atributo de respuesta en ASP- ContentType Encontré tal problema al usar ASP para crear páginas web para una determinada unidad. En el sistema MIS anterior de la unidad, algunos archivos de Word se guardaron en la base de datos en forma de transmisiones de bytes. Ahora el usuario me pidió que usara ASP para sacar estos datos del archivo de Word de la base de datos y mostrarlos en la página web.