Vibration or too much D term in the PID will cause the gyros to report invalid angles. The FC will try to correct those angles and an instant later will get a valid angle and have to correct back. This jumping around has the effect of making it climb because the motors are always spinning up and down, but they spin up faster than they spin down.
Straighten or replace bent motor shafts. Balance and track (track means that you get one perfect plane from the side, wrong is two because one prop tip is higher) your props. Finally, increase GyroTau (Configuration -> Stabilization -> Expert -> GyroNoiseFiltering) a little (maybe from .005 to .010) but beware that this slows down the reactions and requires lower PIDs.