DFA accepts common strings, reduction to NPcomplete $B=\{\left&lt;M_1,M_2,...,M_k\right&gt;\text{ : Each $M_i$ is a DFA and
all of the $M_i$ accept some common string.} \}$

I'm trying to show that B is NP-complete. I know I have to reduce it to another NP-complete problem, but I'm having a lot of trouble coming up with the algorithm that decides B. 

I was thinking I could keep track of all the DFAs accepted by M1 and then check those in M2, any that accept there I'd feed to M3 and so on until I either ran through all the DFAs (accept) or ran out of accepted strings (reject).
I'm not really convinced this runs in NP time though. How exactly do I prove that it does? Or is this a terrible algorithm? 

Thank you!
Your problem is actually not NP-complete (unless NP=PSPACE), though it is NP-hard. The problem is that the witness - the string in the intersection - could be very long.

Kozen showed that DFA-intersection is PSPACE-complete, which implies the preceding paragraph. For a very similar proof (of a different statement), see my writeup.