In XVWA (Xtreme Vulnerable Web Application) I presented with an PBKDF2 with sha256 and 1000 iteration as such:


function create_hash($password)
    // format: algorithm:iterations:salt:hash
    $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTE_SIZE, MCRYPT_DEV_URANDOM));
    return  $salt . " : " . 
// where $password is a user supplied data.


Is there a way to retrieve the password?

1 Answer 1


You can try to reverse a hash value by trying to brute force it, i.e. run the has function over a list of possible (password) values until you encounter the same output. If this procedure can be successful is dependent on two questions:

  • How fast can I compute a password hash (or in other words: how many passwords can I try per second)
  • How complicated is the password (how many password will I have to try before I find the password)

The calculation time is the quotient of those two values. That is why one uses designated password hashing functions which are slow.

While PBKDF2 is designed as a password hashing function, it has a rather dated design and the parameters chosen here (1000 iterations) are not appropriate for modern hardware.

So, assuming the password is not too complicated, you might have a realistic chance to reverse the hash. The standard tools for such an attack are hashcat and john the ripper.

  • on same password inputs I get different outputs. I do not think this is the case for the PBKDF2 exercises Commented Jul 18, 2019 at 15:45
  • The salt ist created randomly. Running the function on the same password twice will result in different salts and thus different hashes. For verification/cracking, you need to know the salt value used (should be stored alongside the hash).
    – mat
    Commented Jul 18, 2019 at 15:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .