Este artigo apresenta principalmente o princípio e a solução da vulnerabilidade de upload de arquivo chr(0) do ASP. A vulnerabilidade chr(0) pode ignorar a verificação de extensão ao fazer upload de arquivos.
Quando usamos ASP para desenvolver a função de upload de arquivos, a fim de evitar que os usuários carreguem programas de Trojan, muitas vezes restringimos o upload de alguns arquivos. Um método comum é determinar se a extensão do arquivo carregado atende aos regulamentos. a função de string correta para recuperar o arquivo carregado Os últimos quatro dígitos do nome do arquivo podem ser facilmente determinados, mas há uma vulnerabilidade nele, que é muito perigosa, e é a vulnerabilidade chr(0). detalhes.
1. Primeiro, explique o que é chr(0)?
Em ASP, você pode usar a função chr() para chamar o código ASCII, onde chr(0) significa que a chamada é um caractere final. Simplificando, quando uma string contém o caractere chr(0), apenas a frente de chr. (0) podem ser caracteres de saída, os caracteres após chr(0) não serão exibidos. Dê um exemplo para ilustrar:
Copie o código do código da seguinte forma:
<%response.write "HTMer.com"&chr(0)&"Bem-vindo"%>
Se você executar o código acima no IIS, ele gerará apenas "HTMer.com"? O seguinte "Bem-vindo" desapareceu, porque quando chr(0) é lido, a instrução é considerada encerrada.
2. Princípio de upload de vulnerabilidade Chr(0):
Suponha que eu configurei o programa ASP para fazer upload apenas de arquivos jpg. Veja como uso a vulnerabilidade chr(0) para fazer upload do Trojan ASP:
Suponha que haja um arquivo Trojan ASP chamado htmer.asp. Eu o renomeei como htmer.asp .jpg. Você viu um espaço no meio? Quando obtemos o nome do arquivo, esse espaço é considerado chr(0). Quando usamos right("htmer.asp .jpg",4) para visualizá-lo, é de fato .jpg, mas quando realmente lemos htmer.asp . jpg, e ao gerar o arquivo, o sistema pensa que acabou quando lê chr(0), então o .jpg subsequente não pode ser gerado. O nome do arquivo carregado é gerado automaticamente como htmer.asp. Eu acho que você deveria saber disso.
3. Métodos para resolver a vulnerabilidade chr(0)
A solução é verificar se há chr(0) no nome do arquivo carregado e substituir diretamente o caractere chr(0) pela função de substituição em ASP.