Recomendado: a otimização do ASP usa a ligação de dados para obter páginas dinâmicas de alta eficiência A ligação de dados não é um conceito novo, e o IE 4.0 já forneceu suporte rico a ele. No entanto, a ligação de dados não é valorizada, pois merece, e muitos desenvolvedores parecem estar mais dispostos a usar métodos de script do lado do servidor. No entanto, de fato
Objetivo de quebra: quebrando uma senha de login de Trojan Encrypted. Como não há descrição da versão no cavalo de Trojan, não sei como é chamado o Trojan.
Idéias de cracking: dois tipos: substitua o texto cifrado pela senha criptografada e resolva a senha reversa usando o algoritmo CipherText e Criptografia.
O primeiro não é uma rachadura real. Se você não conseguir obter o código -fonte do ASP, pode dizer que não tenho chance de quebrar a senha. Um amigo da China disse que havia obtido permissões na Web, mas não conseguiu modificar a página inicial. Ele descobriu que havia um ASP Trojan nele, mas a senha foi criptografada. Ok, há muita bobagem, então esteja preparado, essa explicação será bastante longa.
Os códigos de chave para a verificação de senha do ASP Trojan Login são os seguintes:
Se EPASS (TRIM (request.form (senha))) = Q_UX624Q P Então Response.cookies (senha) = 8811748 ... |
É óbvio que a função EPASS é usada para criptografar a senha de entrada e, em seguida, compare o CipherText obtido com o CipherText original. Se você tiver um pouco de programação básica, especialmente o VB, o algoritmo de criptografia no EPASS ficará claro rapidamente. Caso contrário, não importa. Eu acredito que você entenderá rapidamente após minha explicação. Na função, a variável que salva a senha é passada. PASS & ZXCVBNM,./ Conecte o conteúdo Pass com ZXCVBNM,./ Para obter uma nova string. Esquerda (Pass & Zxcvbnm,./, 10) leva os 10 dígitos superiores. A função STRREVERSE reverte a ordem de string de 10 bits resultante. Len (Pass) recebe a duração da senha. Abaixo está um loop. O comprimento do ASCII Code-Password de cada bit na string obtido é arredondado (a posição do caractere *1.1) e, em seguida, o valor resultante é convertido em caracteres e reconectado. Finalmente, todos os caracteres com 'na string obtida são substituídos por B, para que o texto cifra seja gerado. Se extrairmos o algoritmo de criptografia e substituirmos o texto cifra original pelo nosso próprio texto cifrado, a senha correspondente também se tornará sua senha. Mas eu disse que isso não é uma rachadura real.
Se digitarmos amor, o processo de criptografia é o seguinte:
| amor Lovezxcvbnm,./'Conexão lovezxcvbn 'pegue o top 10 NBVCXZZOVOL 'Ordem invertido n 110 (ASCII) -4 (número do dígito) int (1 (posição)*1.1) = 107 O código ASCII de 107 é k, e assim por diante, e o último texto cifrado: K`ucy Hzts |
Podemos inverter a senha através dos algoritmos CipherText e de criptografia e empurrá -la a partir da última etapa do algoritmo. A última etapa é substituir tudo por B, é necessário substituir B de volta, a resposta é não. Enquanto conseguirmos o último texto cifrado, é possível que a senha seja diferente. Se houver 10 Bs, o número de senhas originais será 2 à potência de 10. Embora exista apenas uma senha original, 1024 senhas estarão corretas. Se você deseja quebrá -lo perfeitamente, tente escrever todas as combinações. Em seguida, esta etapa pode ser ignorada, o algoritmo acima é muito claro.
| CHR (ASC (MID (TEMPPASS, J, 1))-Templen Int (J*1.1)) |
Só precisamos simplesmente mudar o e - por um tempo.
| CHR (ASC (MID (Tempass, J, 1)) Templen-Int (J*1.1)))) |
Mas há outro problema. Não sabemos a duração da senha com antecedência, por isso não importa. Felizmente, a senha está entre 1 a 10 dígitos e não é muito longa. Em seguida, podemos usar um loop de 1 a 10 para encontrar todas as senhas possíveis e, em seguida, reverter a ordem delas usando a função STRREVERSE. Então, como determinamos qual senha obtemos no final? Você pode verificar se existem os primeiros dígitos do ZXVBNM e. Então esta é a senha real. Então, se a senha for 10 bits, estará correta para sempre, porque não há conexão por trás dela. Então, podemos obter duas respostas.
A seguir, a função de descriptografia que escrevi:
função ccode (código) para Templen1 = 1 a 10 mmcode = para J = 1 a 10 mmcode = mmcode chr (asc (mid (code, j, 1)) Templen1-Int (j*1.1)) próximo Ccode = strreverse (mmcode) Response.Write Senha & Templen1 &: & ccode & Se mid (ccode, templen1 1,10-templen1) = esquerda (zxcvbnm ,./, 10-templen1) e templen1 <> 10 então resultado = esquerda (ccode, Templen1) próximo Response.Write Last Senha: & Result Função final |
OK, o algoritmo pode não ser totalmente dominado em tão pouco tempo, o que é normal. Portanto, anexarei as instruções e o código -fonte ASP criptografado e descriptografado ao pacote comprimido. Por favor, retire -o e estude cuidadosamente. Da mesma forma, a senha 10 está eternamente correta. Então, vamos pegar o texto cifra original no ASP e ver quais serão os resultados.
Compartilhar: Use o atributo de resposta no ASP- ContentType Encontrei esse problema ao usar asp para criar páginas da web para uma determinada unidade. No sistema MIS anterior da unidade, alguns arquivos do Word foram salvos no banco de dados na forma de fluxos de bytes. Agora, o usuário me pediu para usar o ASP para retirar esses dados do arquivo do Word do banco de dados e exibi -los na página da web.