Can you spot the liar?
J, 49 47 22 bytes
[:I.1(-:\:~i.])/@|:\.]

Try it online!
-14 bytes after reading xigoi's idea of comparing the first index matches to the ranks.
Thanks to tsh for a test case showing that we needed &quot;length not equal to 1&quot; rather than &quot;length greater than 1&quot; as the failure criterion.
Returns 0-based index if exactly one liar is found, and 0 or multiple values otherwise.  Takes &quot;length&quot; by 2 matrix with 0-indexed rank list as left column, score list as right column.

1...\.] For each 1-item outfix (list with item removed), apply the verb...
(...)/@|: Transpose and put the verb in parens between the two rows, so that the rank list is its left arg, and the score list is its right arg.
-:\:~i.] Does the rank list match -: the first index of the score list i.] within the score list sorted descending \:~?  We now have a 0-1 list, where 1 indicates a liar.
[:I. Return the indexes of all ones.