In the end, here it goes in detail the way I myself figured out to get what I've asked (also inspired by @snake5's comments):
1a) for each of the 12 edges (line-segments) of one box, we test first if it is entirely within the other box. If it is, we already save its both vertices in the final list of vertices that form the desired polyhedron.
1b) if it is not, then we test if such edge pierces (intersects) one or two of all the 6 faces (planes) of the other box (it can't intersect more than two faces). If any intersections exist, we save the intersection point or points (vector3) in the final list of vertices that form the desired polyhedron.
2) then, for these edges (line-segments) which intersected the other box, we take their two vertices and test if they are inside the other box. The ones that are must be also saved in the final list of vertices that form the desired polyhedron.
Although I am not sure whether that's the most efficient way of solving the problem, so far it does not seem too bad performance-wise: the first step, in the unlikely worst case, has to perform 144 line-segment/plane intersection tests and 8 line-segment/plane calculations of intersection points. The second step, in the worst case, has to perform 16 point-within-box test.
In case anyone has any ideas for optimizing that, feel more than welcome to comment that I will update the answer. Or if someone comes up with a better solution, I encourage to put a better answer: I will be glad to uncheck this as the accepted answer. I myself, if this solution proves too heavy, will come back and put a follow up question.