Injeção V: Hash de senhas
A livraria desta coleção, na tentativa de evitar novos ataques, consultou um especialista que a aconselhou a começar a aplicar hash em suas senhas. Por entender errado o que o especialista quis dizer, a livraria aplicou hash na senha de administrador e passou a exigi-la para ter acesso ao dicionário users.
A função hashp() recebe uma função de hash aleatória (sha224, sha256, sha384 ou sha512) e calcula o hash da string fornecida. A função database() só retornará users se database() for chamada com uma str que corresponda à versão com hash da senha de administrador. Por meio de engenharia social, você sabe que a senha de administrador tem o formato password??, em que os dois últimos caracteres são dígitos (ou seja, é um número entre 10 e 99).
Crie uma consulta que copie users para res.
Exemplos
from hashlib import *
param = "your text here"
def hashp(passw):
return sha???(bytes(passw, "utf-8")).hexdigest()
def database(passw):
users = {
"alice": "password",
"bob": "password"
}
admin = hashp("password??")
return users if passw == admin else {"Error": "Access Denied"}
res = eval("search("%s")" % param)
print(res) ➞ usersNotas
- Crie uma string, não uma função.
- Tudo o que estiver presente na aba Tests e não aparecer aqui está relacionado aos testes e é irrelevante.
- Para facilitar a leitura, tente dividir sua string em substrings menores.
- Como medida antitrapaça, é proibido nomear uma variável como
x_x.