You shouldn't paint a concrete floor but stain it. There are several concrete stains that are made specifically for what you are trying to do available at Home Depot or similar. The surface prep as you noted is very important. In addition to removing any oil stains, the concrete surface needs to be either sanded with a concrete sander or etched with muratic acid. This is done to make the surface more porous and so the stain will sink deep into the concrete. Good luck.