I need help with a little code entry pad.

  for(x=0; x<9; x++){
    if(oldstate[x] != state[x]){ //If these new states are different then the old ones
      if(state[x] == HIGH)
      {
        attempt[x] = buttons[x]; //Set attempt (Just first index for now) to buttons pressed

attempt does not have 9 elements...

  for(x=0; x<2; x++){
    if(attempt[0] == pass[0]){
      Correct();
    }
  }

You are checking that the first element in each array matches twice. Not exactly what you want to do, is it?

  if ((millis() - time) > 5000){
    for(x=0;x<1;x++){
      attempt[x] = 0;
    }
  }

How many times is that loop going to execute?