#Java 10, 179 105 102 bytes
Java 10, 179 105 102 bytes
(a,b,c)->{var r="#";for(int i=1,t;i<9;)r+=a.substring(t=b.indexOf(c.substring(i,i+=2)),t+2);return r;} Whopping -77 bytes thanks to @OlivierGrégoire.
Explanation:
(a,b,c)->{ // Method with String as three parameters and return-type var r="#"; // Result-String, starting at "#" for(int i=1,t;i<9; // Loop `i` from 1 to 9 (exclusive) r+= // Append the result with: a.substring( // A substring from the first input, t=b.indexOf( // where an index is determined in the second input c.substring(i,i+=2)),t+2); // based on a substring of the third input return r;} // Return the result-String