Boolean Modifiers not working normally
The direction of the Normals determines how the objects combine when using a Boolean Modifier:

On the first image the cube and the torus have their normals facing out:



On the second image the Torus has the normals facing in:



On the third image both objects have their normals facing in:



Quote from the manual:


  
  Difference
  
  
  The modified mesh is subtracted from the target mesh.
  
  If the target Mesh has inverted normals, Blender will Intersect the modified  mesh.
  
  If the modified Mesh has inverted normals, Blender will add both meshes (Union).
  
  If both Meshes use inverted normals, Blender will Intersect the target Mesh.
  
  
  Union
  
  
  The target mesh is added to the modified mesh.
  
  If the target Mesh has inverted normals, Blender will Intersect the target Mesh.
  
  If the modified Mesh has inverted normals, Blender will subtract the target Mesh.
  
  If both Meshes use inverted normals, Blender will Intersect the modified Mesh.
  
  
  Intersect
  
  
  The target mesh is subtracted from the modified mesh.
  
  If the target Mesh has inverted normals, Blender will subtract the target Mesh.
  
  If the modified Mesh has inverted normals, Blender will intersect the target Mesh.
  
  If both Meshes use inverted normals, Blender will add both meshes (Union).


To recalculate normals enter Edit Mode (Tab).

Select all faces and press CtrlN To have the normals face out 

Or CtrlShiftN to have normals face inside the mesh.

For an explanation on Face Normals please read:

What are face normals?