It is not really a Sage question but a programming question. If your numbers were only 0 and 1, you could have tried an exhaustive search (using for example itertools.product([0,1], repeat=20). But testing 10^20 cases is impossible, so you need to inspect your equations to reduce the set of possiblities. For example, x5-x2=3 tells you that x5 can be deduced from x2 (so you will not have to iterate over it) and that x2 is between 0 and 6 ; x1*x2=18 tells you that x2 can be deduced from x1 (so you will not have to iterate over it either) and x1 can only take the values 2, 3, 6, 9.
sage: var('x1 x2 x3 x4')