Sorting is a good idea (radix sort seems to be the way to go), but I wouldn't sort the intervals. Instead, I would use the sweep line style approach. Imagine the intervals being drawn on a number line from 0 to n^d. Now we "sweep" from left to right.
The interesting points were the situation of how many intervals intersect our current position can change, are the start/end points of our intervals. Note that we can always choose one of the start or end points as the solution as well.
So we just consider those points and sweep from left to right:
events = start points UNION end points
sort events (rank start points before end points in case of a tie)
count = 0
max = 0
for each event x in sorted order
if x is start point
count++
if x is end point
count--
if count > max
max = count
result = x